4

这是我的 nginx 状态如下:

Active connections: 6119
server accepts handled requests
 418584709 418584709 455575794 
Reading: 439 Writing: 104 Waiting: 5576

Waiting的值比Reading和Writing高很多,正常吗?

因为'keep-alive'是开放的?

但是如果我向服务器发送大量请求,读写的值不会增加,所以我认为肯定是nginx或其他的瓶颈。

4

2 回答 2

2

Waiting时间是,即连接仍然打开,Active - (Reading + Writing)等待新请求或保活到期。

您可以更改 keepalive 默认值(即 75 秒)

keepalive_timeout 20s;

或通过在发送到浏览器的标头中添加可选的第二个超时来告诉浏览器何时应该关闭连接

keepalive_timeout 20s 20s;

但是在这个关于 keepalive 的 nginx 页面中,您会看到一些浏览器不关心标头(无论如何,由于这个可选参数,您的网站不会获得太多收益)。

keepalive 是一种减少创建连接开销的方法,因为在大多数情况下,用户将浏览站点等...(加上来自单个页面的多个请求,以下载cssjavascript图像等...)

这取决于您的站点,您可以减少 keepalive - 但请记住,建立连接的成本很高。这是一个权衡,您必须根据站点统计数据进行优化。您也可以一点一点地减少超时时间(75s -> 50,然后一周后 30...)并查看服务器的行为。

于 2013-02-06T05:22:50.127 回答
0

您真的不想修复它,因为“等待”意味着保持连接。它们几乎不消耗任何资源(socket + nginx 中每 10000 个连接大约 2.5M 的内存)。

请求是短暂的吗?他们可能正在读/写,然后在短时间内关闭。

如果您真的有兴趣修复它,您可以测试 nginx 是否是瓶颈,您可以在 nginx 配置中将 keep-alive 设置为 0:

keepalive_timeout 0;
于 2013-02-06T04:27:15.130 回答