Como posso depurar o processo Ruby que continua subindo?

1

Alguns dias atrás, todos os quatro servidores do meu aplicativo começaram a ter problemas. Ele veio depois que eu implantei algum código, mas tudo que fiz foi atualizar um arquivo de banco de dados local que armazena alguns endereços IP, então eu não fiz nenhuma alteração real no código. Parece que nesse período, meus processos ruby estão ficando fora de controle. Eles ficarão bem por um tempo, então, de repente, eles rapidamente sobem para 100% da CPU em uma CPU. Desde que eu estou usando o passageiro, eventualmente, outro thread vai fazer a mesma coisa, e no máximo outra CPU, e assim por diante, até que o servidor web não possa mais lidar com o tráfego e pare de responder.

Eu já fiz muita escavação (que eu não sou boa em fazer), mas pelo menos eu descobri que ao executar um strace nos processos, eles parecem bem normais para começar, e então quando eles ficam loucos descrito acima, é apenas uma inundação contínua de clock_gettime(CLOCK_REALTIME, {1518938625, 9566131}) = 0 de chamadas. O processo normal, como eu disse, não é cuspir constantemente, apenas quando um pedido da web aparece, por exemplo, mas algo o coloca fora e isso só enlouquece até eu matar o processo, reiniciar o passageiro ou reiniciar o servidor. Então, dentro de uma ou duas horas, volta a ter problemas novamente.

Eu estive nisso por alguns dias, cuidando de coisas que não param para que ele continue mancando, mas eu estou desesperado por algumas idéias. Tenho notado algumas postagens muito antigas de 2013 que falam sobre um problema de cpu de 100% com essa coisa de clock_gettime, e eu tentei as duas sugestões associadas às poucas postagens que vi. Uma é definir uma variável TZ e a outra deve corrigir um bug de algum tipo. Eu não entendo o raciocínio por trás de qualquer uma das correções propostas, mas infelizmente elas não funcionaram.

Estou executando a seguinte pilha: rubi 2.2.0 Passageiro autônomo:   Versão Gem: 4.0.58 (e tentei atualizar para 5.2.0 em um servidor sem alteração no comportamento) MySQL CentOS 6.9

    
por Sean 18.02.2018 / 08:32

0 respostas