小编Eri*_*wan的帖子

为什么我的 Web 服务器会在高负载时通过 TCP 重置断开连接?

我有一个带有 nginx 的小型 VPS 设置。我想从中榨出尽可能多的性能,所以我一直在尝试优化和负载测试。

我正在使用 Blitz.io 通过获取一个小的静态文本文件来进行负载测试,并遇到一个奇怪的问题,即一旦同时连接的数量达到大约 2000,服务器似乎正在发送 TCP 重置。我知道这是一个非常大量,但使用 htop 后,服务器在 CPU 时间和内存方面仍有大量空闲时间,所以我想找出这个问题的根源,看看我是否可以进一步推动它。

我在 2GB Linode VPS 上运行 Ubuntu 14.04 LTS(64 位)。

我没有足够的声誉直接发布此图表,因此这里是 Blitz.io 图表的链接:

在此处输入图片说明

以下是我为找出问题根源所做的工作:

  • nginx 配置值worker_rlimit_nofile设置为 8192
  • nofile设置为64000为硬性和软性限制rootwww-data用户(什么nginx的运行为)/etc/security/limits.conf
  • 没有任何迹象表明有任何问题/var/log/nginx.d/error.log(通常,如果您遇到文件描述符限制,nginx 会打印错误消息,这样说)

  • 我有 ufw 设置,但没有速率限制规则。ufw 日志表明没有任何内容被阻止,我尝试禁用 ufw 并得到相同的结果。

  • 没有指示性错误 /var/log/kern.log
  • 没有指示性错误 /var/log/syslog
  • 我已将以下值添加到/etc/sysctl.conf并加载它们sysctl -p,但没有任何效果:

    net.ipv4.tcp_max_syn_backlog = 1024
    net.core.somaxconn = 1024
    net.core.netdev_max_backlog = 2000
    
    Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:我做了一个新的测试,在一个非常小的文件(只有 3 个字节)上增加到 3000 个连接。这是 Blitz.io 图表:

Blitz.io 图

同样,根据 …

nginx reset tcp high-load

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

high-load ×1

nginx ×1

reset ×1

tcp ×1