nginx / node.js 在高负载下断开连接

nginx / node.js 在高负载下断开连接

Ubuntu 11.04,node.js 0.6.16,nginx 1.0.8

我开始调试以下错误,我们在高负载下(约 3500 个用户主动长轮询/进行 api 调用)经常从前端记录该错误:

parsererror:Error: jQuery171045845469435053_1347386706235 was not called",

所有产生此错误的调​​用都是通过 nginx 代理到 node.js 服务器的长轮询。

当这种情况发生时,我发现服务器的以下位置出现以下错误:

/var/log/syslog每隔几分钟我就会看到这些内容:

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

在 nginx 中error.log,我发现以下两个错误出现得比较频繁:

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

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

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

在过去的几个月里,当我们的流量稳步增长时,我调整了以下系统参数(以及其他参数):

  1. ulimit对于运行进程的用户来说设置得非常高(我认为是 16000)
  2. 将 nginx 设置worker_connections为 16024
  3. sysctl net.ipv4.tcp_max_syn_backlog和设置net.core.somaxconn为 4096

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

这似乎表明 node.js 服务器正在不正常地关闭连接或被系统强制关闭连接。我该如何验证我的假设?

相关内容