我正在尝试调整我的服务器性能。为此,我想测试一些 sysctl 参数,例如net.core.somaxconn
、net.ipv4.tcp_max_syn_backlog
和net.core.netdev_max_backlog
。
以下是我的设置:
运行 nginx docker 容器的服务器
4vCPU
作为提供静态页面的测试 Web 服务器。一
16vCPU
、一8vCPU
、一作为我使用框架4vCPU
在 nginx 服务器上的负载生成器。locust
使用网络服务器虚拟机上的默认 sysctl 参数,我可以获得15k
RPS。将 和net.core.somaxconn
更改为更高的值或更低的值后,结果没有改变。我什至将它们设置为RPS 。然后我跑去看看是否有一些数据包因为队列已满而被丢弃,我期望从输出中得到类似的结果。但它没有输出任何东西。net.ipv4.tcp_max_syn_backlog
net.core.netdev_max_backlog
1
15k
netstat -s | grep LISTEN
syn
accept
123456 SYNs to LISTEN sockets dropped
我测试了一些其他 sysctl 参数。例如,我将net.ipv4.tcp_keepalive_time
,net.ipv4.tcp_keepalive_probes
和net.ipv4.tcp_keepalive_intvl
全部设置为 0。但是在运行之后netstat -a | grep -i wait
,我仍然可以看到很多连接都处于TIME_WAIT
状态。有什么不对?你能帮我吗?