![适合 Ajax 的良好系统,每隔 N 秒向 PHP 发送一次 keepalive 消息,而不会导致服务器过载](https://linux22.com/image/748130/%E9%80%82%E5%90%88%20Ajax%20%E7%9A%84%E8%89%AF%E5%A5%BD%E7%B3%BB%E7%BB%9F%EF%BC%8C%E6%AF%8F%E9%9A%94%20N%20%E7%A7%92%E5%90%91%20PHP%20%E5%8F%91%E9%80%81%E4%B8%80%E6%AC%A1%20keepalive%20%E6%B6%88%E6%81%AF%EF%BC%8C%E8%80%8C%E4%B8%8D%E4%BC%9A%E5%AF%BC%E8%87%B4%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%87%E8%BD%BD.png)
我有一个网站,其中 Javascript 每 5 秒向 CentOS 服务器上的 PHP 脚本发送一次 HTTP POST Ajax 请求。如果我检查netstat
,我会看到很多处于TIME_WAIT
状态的连接(大部分在 6 到 9 之间)。这只是针对一个用户。但该网站每 5 秒应该会从浏览网站的用户那里收到数百甚至数千个这样的请求。然后 PHP 脚本从数据库获取一些数据并将其返回给用户。所以我想知道我当前的解决方案是否好/是否不占用服务器的资源。
我已经研究过更改服务器上的网络设置,例如通常的net.ipv4.tcp_fin_timeout
,
net.ipv4.tcp_tw_recycle
和
net.ipv4.tcp_tw_reuse
。
但第一个与可以有多少个 TIME_WAIT 连接无关。我宁愿不更改这些设置,因为它是网站等的 Web 服务器,而不是仅用于 keepalive 的专用服务器。
我想知道 Ajax 是否可以使用 UDP 发送 HTTP POST 以摆脱 TCP 特定的开销,但这是不可能的。
这让我不禁想问:我还能做些什么来尽可能减少发送 keepalive 所消耗的资源?有没有轻量级的服务器服务可以处理这类请求?