一:简介
这个命令可以显示每个进程的栈跟踪。pstack命令必须由相应进程的宿主或root运行。可以使用pstack来确定进程挂起的位置。此命令允许使用唯一选项就是进程的PID
这个命令在排查进程问题时非常有用。比如我们发现一个服务一直处于work状态(如假死状态,似死循环),使用这个命令就能轻松定位问题所在;
可以在一段时间内,多次执行pstack,若发现代码栈总是停在同一个位置,那这个位置就需要重点关注,很可能就是出问题的地方
二:使用示例
# ps aux|grep php root 4602 0.0 0.0 112648 960 pts/0 R+ 18:52 0:00 grep --color=auto php root 11886 0.0 0.2 213900 5008 ? Ss Apr22 1:30 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) www 11887 0.0 0.3 216004 6344 ? S Apr22 0:00 php-fpm: pool www www 11888 0.0 0.3 215992 6400 ? S Apr22 0:00 php-fpm: pool www www 11889 0.0 0.3 215992 6408 ? S Apr22 0:00 php-fpm: pool www www 11890 0.0 0.3 215992 6400 ? S Apr22 0:00 php-fpm: pool www # pstack 11887 #0 0x00007facadab0400 in __accept_nocancel () from /lib64/libc.so.6 #1 0x00000000008772f1 in fcgi_accept_request (req=req@entry=0x7ffc465923d0) at /usr/local/php/sapi/fpm/fpm/fastcgi.c:852 #2 0x000000000043372c in main (argc=<optimized out>, argv=<optimized out>) at /usr/local/php/sapi/fpm/fpm/fpm_main.c:1891