增加 nginx 活跃连接数超过 65535

增加 nginx 活跃连接数超过 65535

目前我正在设置 nginx 以接受 C1M,我在装有 Centos 7.0 和 RAM 10G 的 Virtual BOX 中进行设置。

这是我的 sysctl.conf 配置。

fs.file-max                    = 9999999
fs.nr_open                     = 9999999

net.core.netdev_max_backlog    = 4096
net.core.rmem_max              = 16777216
net.core.somaxconn             = 3240000
net.core.wmem_max              = 16777216
net.core.netdev_max_backlog    = 16384

net.ipv4.ip_forward            = 0
net.ipv4.ip_local_port_range   = 1      65535
net.ipv4.tcp_rmem              = 8192    873800  8388608
net.ipv4.tcp_wmem              = 4096    655360  8388608
net.ipv4.tcp_mem               = 8388608 8388608 8388608
net.ipv4.tcp_fin_timeout       = 7
net.ipv4.tcp_keepalive_time    = 30
net.ipv4.tcp_max_syn_backlog   = 3240000
net.ipv4.tcp_max_tw_buckets    = 6000000
net.ipv4.tcp_no_metrics_save   = 1
net.ipv4.tcp_syn_retries       = 2
net.ipv4.tcp_tw_recycle        = 1
net.ipv4.tcp_tw_reuse          = 1
net.ipv4.tcp_slow_start_after_idle = 0

vm.min_free_kbytes             = 65536
vm.overcommit_memory           = 2
net.nf_conntrack_max           = 237680
net.netfilter.nf_conntrack_max = 237680

net.ipv4.ip_conntrack_max               = 131072
net.ipv4.netfilter.ip_conntrack_max     = 1048576

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

在 nginx.conf 中,我将 worker_connection 设置为 1000000、worker_process 为 4、worker_rlimit_nofile 为 1000000

我使用 ulimit -n 2000000 设置了我的 openfile,但我只获得大约 65K 的活动连接,就像这个。

Active connections: 65318 
server accepts handled requests
 768234 768234 1549023 
Reading: 0 Writing: 61245 Waiting: 4073 

I try with wrk -t3 -c67000 -d40s http://my-ip:80

我是否配置错误?谢谢您的回复。

巴尤佩玛迪,

答案1

活动连接的数量受可用套接字数量的限制。

socket 是clien_ip + client_port + server_port + server_ip。最大端口数约为 65k,因此增加连接数的唯一方法 - 使用额外的 IP。

例如使用虚拟接口. 或者向 virtualbox 机器添加虚拟适配器。

无论如何,为了进行良好的性能测试,您应该使用分布式客户端(负载生成器),因为单个或多个客户端的测试通常成为客户端的性能测试,而不是服务器=)

答案2

您是从多台机器还是从一台机器运行基准测试工具? 看来您是从一台机器运行的,因此本地端口范围是罪魁祸首。

相关内容