在nginx中,worker\u连接、keepalive\u超时和$connection之间的关系是什么

在nginx中,worker\u连接、keepalive\u超时和$connection之间的关系是什么,nginx,Nginx,nginx文档说 max_clients = worker_processes * worker_connections 但是keepalive因素是如何影响这一点的呢?我的配置设置有2个worker_进程和8192个worker_连接;这意味着理论上我最多可以处理16384个并发连接。同时推出16384个数据流是巨大的,但如果我有一个60秒的keepalive_超时,那么每个客户端占用一分钟的连接,这个数字的含义就完全不同了。是哪一个 连接到所有这些的是$connection变量,可与log

nginx文档说

max_clients = worker_processes * worker_connections
但是keepalive因素是如何影响这一点的呢?我的配置设置有2个worker_进程和8192个worker_连接;这意味着理论上我最多可以处理16384个并发连接。同时推出16384个数据流是巨大的,但如果我有一个60秒的keepalive_超时,那么每个客户端占用一分钟的连接,这个数字的含义就完全不同了。是哪一个

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

log_format  perf  '$request_time $time_local $body_bytes_sent*$gzip_ratio $connection $pipe $status $request_uri';
$connection变量报告了大约1100-1200万个连接!我不是数学专业的学生,但很明显,这个数字要远远高于worker\u进程和worker\u连接。那么它应该代表什么呢


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

$connection是一个计数器,而不是当前使用的连接总数。所以它的目的是成长


Keepalive连接不能被丢弃,因此房间是worker_进程*worker_连接-Keepalive连接

想象一下整个画面:首先客户端连接到您,获取一个文件,然后浏览器将连接保持60秒。另一个客户端连接、获取并保持其连接。在第一分钟结束时,您可能已经(在最坏的情况下)所有的客户端在过去60秒内向您请求了一些东西,但它们的连接仍然保持打开状态

因此,在最坏的情况下,您将在一秒钟内提供“worker_进程*worker_连接/keep_alive”连接,即您的数字约为260。如果你需要更多的连接,你应该分配更多的连接——只是为了给keepalives服务:请阅读我的回复


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

计数器!既然你这么说了,我就明白了。谢谢你回答这样一个晦涩难懂的问题。