Saya memiliki proses yang beberapa kali sekarang berhenti merespons dan tampaknya benar-benar terkunci. Itu tidak menanggapi upaya strace atau mengintip dengan gdb (gdb hanya hang pada syscall wait4 ()). Proses ini dapat dijalankan, dan tidak menunggu pada syscall (/ proc / X / syscall:) running
atau dalam kondisi tidur tanpa gangguan (/ proc / X / status:) State: R (running)
.
Bagaimana tepatnya proses ini? Apakah ini semacam bug kernel?
Prosesnya redis, dan ini sudah terjadi beberapa kali sekarang. Satu-satunya hal yang dapat mematikan proses adalah reboot, tampaknya. OS adalah Sen 7.
Sunting: Versi kernel adalah 3.10.0-123.13.2.el7.x86_64. Mencoba pembaruan ke 3.10.0-229.11.1.el7 untuk melihat apakah itu ada bedanya.
process
linux-kernel
redis
alienth
sumber
sumber
dmesg
hasilnya?/proc/<pid>/stack
(dan/proc/<pid>/task/*/stack
)? Sudahkah proses itu mendapat beberapa utas?Jawaban:
wait4 adalah syscall yang menunjukkan proses sedang menunggu salah satu pemutusan anaknya. Ini mungkin menunjukkan beberapa masalah dengan penanganan sinyal.
Sedikit brutal, tapi Anda dapat mencoba untuk membunuh hirarki dari aplikasi:
kill -15 -$YourRedisPID
. The - before PID berarti "PID dan anak-anaknya". Karena tampaknya sedang menunggu pemutusan anak, itu mungkin membukanya.Jika tidak berfungsi, mari periksa lebih dalam: cari status proses sinyal Anda
grep ^Sig /proc/$YourRedisPID/status
Anda akan melihat beberapa hal seperti:
Sebagaimana didefinisikan dalam "fs / proc / array.c" dari sumber kernel, "SigQ" adalah jumlah sinyal yang tertunda / batas sinyal yang tertunda.
Jika jumlah sinyal terlalu tinggi, ini mungkin mengindikasikan "SIGKILL" Anda tidak ditangani sama sekali. Saya masih memeriksa file "kernel / signal.c" untuk memahami manajemen sinyal dari sinyal-sinyal khusus ini.
Untuk pemahaman langsung tentang output, cobalah one-liner ini:
awk 'BEGIN{print "ibase=16;obase=2;"} /^Sig...:/{ print toupper($2)}' /proc/$YourRedisPID/status | BC_LINE_LENGTH=0 bc
Ini menghasilkan saya:
Mari kita mulai dengan mengirimkan output ini kepada kami. Saya akan memperbarui pos sesuai kebutuhan.
sumber