这是我的问题,当我发送kill
命令给我的进程时,无论是kill -9
还是kill -TERM
,我的进程都进入僵尸(失效)状态,需要父进程调用waitpid
来捕获退出状态。但是需要5-7秒的时间,太长了。
$ ps -ef | grep store
web_ser+ 2793 1 30 May24 ? 1-12:13:45 [my_test] <defunct>
web_ser+ 45462 33954 0 20:22 pts/0 00:00:00 grep --color=auto store
然而,当我使用pstack
打印父进程时,它仍然阻塞在waitpid
:
$ pstack 46046
#0 0x00007ffa2d078dbc in waitpid () from /lib64/libc.so.6
#1 0x00000000004012c3 in main ()
我不知道为什么它花费这么多时间退出,这个进程使用大约70G内存,可能是因为内存回收,但我不知道找到问题,谁能给一些想法?
建议检查两端是否存在需要终止的NFS/共享文件夹连接
一般来说,检查是否需要清除任何网络依赖项。
另外,检查应用程序使用的任何特殊设备驱动程序(GPU/图形卡/USB设备/蓝牙设备/Wifi适配器/打印机…)。一些低质量的设备驱动程序需要时间来脱离。