在Nginx中,worker_connections,keepalive_timeout和$ connection之间是什么关系

In nginx, what is the relationship between worker_connections, keepalive_timeout and $connection

nginx文档说

1
max_clients = worker_processes * worker_connections

但是保持生命力因素如何呢?我有2个worker_processes和8192个worker_connections的配置设置;从理论上讲,这意味着我最多可以处理16384个并发连接。同时推送16384个数据流是巨大的,但是如果我有60s keepalive_timeout,那么每个客户端切换连接1分钟,那么这个数字的含义就完全不同了。是什么?

与所有这些连接的是可以与log_format指令一起使用的$ connection变量。我定义了以下日志格式,以便可以分析服务器的性能:

1
log_format  perf  '$request_time $time_local $body_bytes_sent*$gzip_ratio $connection $pipe $status $request_uri';

该$ connection变量报告大约11-12百万个连接!我不是数学专业的学生,??但显然这个数字比worker_processes * worker_connections高得多。那么它应该代表什么呢?

简而言之,我正在尝试找出如何为worker_connection确定一个好的值。


$ connection是一个计数器,不是当前使用的连接总数。因此它打算成长。

Keepalive连接不能被丢弃,因此房间是worker_processes * worker_connections-keepalive连接


想象一下整个情况:第一个客户端连接到您,获取一个文件,然后浏览器保持连接60秒钟。另一个客户端也可以连接,获取并保持其连接。在第一分钟结束时,您可能(在最坏的情况下)在过去60秒钟内所有客户端都向您请求了某些内容,但仍保持其连接打开

因此,在最坏的情况下,您将在一秒钟内提供" worker_processes * worker_connections / keep_alive"连接,即您的电话号码约为260个。如果您需要更多,则应该分配更多的连接-仅用于服务keepalive:在调整Nginx worker_process时阅读我的??答卷器,以每分钟获得10万次点击

afaik nginx可能在2.5mb的内存中容纳10k的非活动(保持活动状态)连接,因此增加worker_connections很便宜,非常便宜。我认为这里的主要瓶颈可能是您的操作系统本身