Tempos limite entre uma API e um servidor elasticsearch a cada 2 horas

2

Estamos com um problema estranho em nossos servidores. (Debian 8.9) Nós temos uma API que é uma aplicação PHP. Ele solicita um elasticsearch que instância está em um servidor separado.

A cada 2 horas, estamos com erros 500, duram 1 ou 2 minutos, raramente mais:

[2017-10-19 20:52:10] +2 hours
[2017-10-19 22:51:59] +2 hours
[2017-10-20 00:52:02] +2 hours
[2017-10-20 02:52:14] +2 hours
[2017-10-20 04:52:28] +2 hours

Às vezes é +4 horas ou +6.

Aqui está o detalhe do erro:

request.CRITICAL: Uncaught PHP Exception Elastica\Exception\Connection\HttpException: 
"Operation timed out" 

O que é bem claro. A API tenta se conectar à instância do elasticsearch até atingir o tempo limite especificado do cliente http.

O que poderia causar isso? Como depurar esse tipo de problema?

É claro que, ao verificar mais tarde todos os URLs referenciadores, tudo está OK.

    
por COil 23.10.2017 / 17:34

2 respostas

1

Eles finalmente conseguiram encontrar o problema. E a causa raiz é totalmente estúpida. Se de fato uma visão de monitoramento do cluster es enviou muitas consultas para es. Aproximadamente 6 vezes mais que o próprio aplicativo!

Como você pode ver a cada 2 horas, a memória estava muito alta e o servidor ficou indisponível por vários minutos até limpar a memória (coletor de lixo).

Outros parâmetros também foram otimizados e / ou aumentados.

    
por 14.11.2017 / 09:25
2

Eu aconselho aumentar o parâmetro somaxconn no kernel.

Adicione a /etc/sysctl.conf :

net.core.somaxconn=512

E, em seguida, execute:

sudo sysctl -p

Também em /etc/redis.conf raise tcp-backlog como em (ou mais):

tcp-backlog 512

Do arquivo de configuração do redis:

TCP listen() backlog.

In high requests-per-second environments you need an high backlog in order to avoid slow clients connections issues. Note that the Linux kernel will silently truncate it to the value of /proc/sys/net/core/somaxconn so make sure to raise both the value of somaxconn and tcp_max_syn_backlog in order to get the desired effect.

    
por 23.10.2017 / 18:09