14

nginx 文档说

max_clients = worker_processes * worker_connections

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

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

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 的良好价值。

4

2 回答 2

9

$connection 是一个计数器,而不是现在使用的连接总数。所以它的目的是增长。

keepalive连接不能丢弃,所以房间是worker_processes * worker_connections - keepalive连接

于 2009-08-12T09:26:13.907 回答
1

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

因此,在最坏的情况下,您将在一秒钟内提供“worker_processes * worker_connections / keep_alive”连接,即您的号码大约为 260。如果你需要更多,你应该分配更多的连接 - 只是为了服务keepalives:阅读我在调整 nginx worker_process 中的回答者以获得每分钟 100k 次点击

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

于 2011-11-22T08:47:45.293 回答