wait4 é um syscall indicando que o processo está aguardando uma finalização de seu filho. Isso pode apontar algum problema com o manuseio do sinal.
Um pouco brutal, mas você pode tentar matar a hierarquia do aplicativo: kill -15 -$YourRedisPID
. O - antes do PID significa "o PID e seus filhos". Como parece estar à espera de um fim de criança, pode desbloqueá-lo.
Se não estiver funcionando, vamos conferir mais profundamente: encontre o status do seu processo de sinal com grep ^Sig /proc/$YourRedisPID/status
Você verá algumas coisas como:
SigQ: 8/62777
SigPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000080
SigCgt: 0000000180004023
Como definido em "fs / proc / array.c" da fonte do kernel, o "SigQ" é o número de sinais pendentes / o limite de sinais pendentes.
Se o número de sinal for muito alto, isso pode indicar que seu "SIGKILL" não é tratado. Ainda estou verificando o arquivo "kernel / signal.c" para entender o gerenciamento de sinal desses sinais especiais.
Para uma compreensão direta da saída, tente este one-liner:
awk 'BEGIN{print "ibase=16;obase=2;"} /^Sig...:/{ print toupper($2)}' /proc/$YourRedisPID/status | BC_LINE_LENGTH=0 bc
Isso me mostra:
0
0
10000000
110000000000000000100000000100011
Vamos começar enviando esta saída. Eu atualizarei a postagem conforme necessário.