nginx / node.js abandonou as conexões sob alta carga

1

Ubuntu 11.04, node.js 0.6.16, nginx 1.0.8

Eu comecei a depurar o seguinte erro que nós estávamos logando do front end com bastante frequência enquanto sob carga pesada (~ 3500 usuários ativamente longos polling / fazendo chamadas de API):

parsererror:Error: jQuery171045845469435053_1347386706235 was not called",

Todas as chamadas que geram este erro são pesquisas longas que passam por um proxy nginx para um servidor node.js.

Enquanto isso ocorre, vejo os seguintes erros aparecerem nos seguintes locais no servidor:

Em /var/log/syslog , vejo explosões desses a cada alguns minutos:

[6356088.813219] TCP: Possible SYN flooding on port 8894. Sending cookies.

No nginx error.log , vejo algumas explosões mais freqüentes dos dois erros a seguir:

2012/09/11 18:13:05 [error] 25104#0: *1229679431 upstream timed out (110: Connection timed out) while connecting to upstream,

e

2012/09/11 18:10:38 [error] 25103#0: *1229382210 recv() failed (104: Connection reset by peer) while reading response header from upstream, 

================================

Eu ajustei (entre outros) os seguintes parâmetros do sistema nos últimos meses, enquanto o tráfego aumentava constantemente:

  1. defina ulimit muito alto (16000 eu acho) para o usuário executando os processos
  2. defina o nginx worker_connections para 16024
  3. defina o sysctl net.ipv4.tcp_max_syn_backlog e net.core.somaxconn para 4096

=================================

Isso parece sugerir que o servidor node.js está fechando as conexões de forma inadequada ou sendo forçado a fechá-las pelo sistema. Como posso testar minha hipótese?

    
por Hersheezy 11.09.2012 / 20:31

0 respostas