【问题标题】:Default value of nginx keepalivenginx keepalive的默认值
【发布时间】:2017-10-07 22:25:33
【问题描述】:

来自 nginx.org,keepalive 配置的默认值为 -,但我不太明白这是什么意思。

Syntax: keepalive connections;
Default:    —
Context:    upstream
This directive appeared in version 1.1.4.

【问题讨论】:

  • 这只是意味着默认情况下与上游的连接不会保持活动状态,否则它将基于 Connection 标头
  • 如果标题说keep-alive,而我没有设置keepalive怎么办?那么默认值是多少呢?
  • 它将保持活动状态,只要您有这样的东西,您可以使用运行 nginx 的lsof -i 4 轻松确认它们。您将看到哪些连接是打开的

标签: nginx


【解决方案1】:

为了让 Nginx 保持 TCP 连接处于活动状态,上游部分和源服务器都应该配置为不完成连接。上游部分的keepalive默认值意味着没有keepalive,因此连接不会被重用,每次你可以看到每个对源服务器的请求都会增加TCP流数,这与keepalive的情况相反。您可以使用 tcpdump 进行检查。

10 Tips for 10x Application Performance博文描述的很好:

客户端保活——保活连接减少开销,尤其是 使用 SSL/TLS 时。对于 NGINX,可以增加最大数量 客户端可以通过给定连接建立的 keepalive_requests 默认值为 100,您可以将 keepalive_timeout 增加到 允许 keepalive 连接保持打开更长时间,从而导致 更快的后续请求。

Upstream keepalives – 上游连接 – 连接到 应用服务器、数据库服务器等——受益于 keepalive 连接也是如此。对于上游连接,您可以 增加keepalive,空闲的keepalive连接数 对每个工作进程保持打开状态。这允许增加 连接重用,减少打开全新的需要 连接。有关更多信息,请参阅我们的博客文章 HTTP Keepalive 连接和 Web 性能。

另见RFC-793 Section 3.5:

一个 TCP 连接可能会以两种方式终止:(1) 正常的 TCP 关闭 使用 FIN 握手的序列,以及 (2) 一个“中止”,其中一个或 发送更多 RST 段,连接状态立即变为 丢弃。如果远程站点关闭了 TCP 连接,则本地 必须通知应用程序是否正常关闭或已关闭 中止。

两个例子,看看下面的应用程序数据。

没有keepalive:

使用保活:

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2014-08-27
    • 2012-05-20
    • 2016-11-29
    • 1970-01-01
    相关资源
    最近更新 更多