nginx tcp SYN数据包未接收到ACK

时间:2017-05-13 07:44:26

标签: node.js linux sockets nginx tcp

我的服务器设置是nginx直接连接到node.js服务器(nginx和node.js在同一节点,nginx是转发请求到节点:127.0.0.1:8000)。症状有时在nginx日志中有大约504个日志。而node.js日志没有显示任何接收请求的迹象。 然后我使用iptables启用tcp日志,它将所有tcp数据包记录到端口8000.检查tcp日志后,似乎nginx尝试与node.js服务器建立tcp连接,但它从未成功。它只是继续重试发送SYN数据包然后由nginx超时。这是一个例子(tcp + nginx log):

13:44:44 sp:48103 dp:8000 SYN
13:44:45 sp:48103 dp:8000 SYN
13:44:47 sp:48103 dp:8000 SYN
13:44:51 sp:48103 dp:8000 SYN
13:44:59 sp:48103 dp:8000 SYN
13:45:15 sp:48103 dp:8000 SYN
13:45:44 nginx 504

在此期间,CPU负载非常轻,内存< 50%,传入请求少于每分钟50。其他请求已正常处理。

服务器是Ubuntu 14.04.2 LTS

知道发生了什么事吗?看起来像操作系统级问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

检查环回接口上TCP端口8000上是否有实际运行的内容。尝试一些命令,如:

lsof -P -n -i tcp:8000
fuser 8000/tcp
ss -4lnt
netstat -4lnt

这些应该会给你一些关于某些东西是否正在倾听的提示。或者它可能只是在侦听特定的接口/地址而不是你的环回。