Node.js nginx tcp SYN数据包未接收ACK

Node.js nginx tcp SYN数据包未接收ACK,node.js,linux,sockets,nginx,tcp,Node.js,Linux,Sockets,Nginx,Tcp,我的服务器设置是nginx直接连接到node.js服务器(nginx和node.js在同一个节点中,nginx将请求转发到node:127.0.0.1:8000)。症状是nginx日志中有时有504个日志。并且node.js日志没有显示任何收到请求的迹象。 然后,我使用iptables启用了tcp日志,它将所有tcp数据包记录到端口8000。检查tcp日志后,nginx似乎试图与node.js服务器建立tcp连接,但从未成功。它只是不断尝试发送SYN数据包,然后被nginx超时。下面是一个示例(

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

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

服务器是Ubuntu 14.04.2 LTS


知道发生了什么吗?似乎是操作系统级的问题?提前感谢。

检查环回接口上的TCP端口8000上是否确实在运行某些内容。尝试以下命令:

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

这些应该会给你一些提示,告诉你是否有什么东西在听。或者它可能只监听特定的接口/地址,而不是您的环回。

它监听的是8000。它正在处理请求。有时候一个请求可能会遇到这样的问题。
lsof -P -n -i tcp:8000
fuser 8000/tcp
ss -4lnt
netstat -4lnt