我有一个关于nginx tune的问题。
我有一个应用程序,我想每秒执行200次。
我创build了bash文件,并使用wget和bqO开关执行。
但它有一个问题。
当请求的数量大于100. nginx不响应另一个请求,并在加载完成之前一直存在。
但是,我设置pm.max_children并将worker_connections设置为200。
你有任何build议来解决这个问题,还是有任何调谐器,如“MySQL调谐器”调谐nginx。
我的configuration:php-fpm55.conf:
pm = ondemand pm.max_children = 1024 pm.start_servers = 20 pm.min_spare_servers = 20 pm.max_spare_servers = 35 pm.max_requests = 256 pm.process_idle_timeout = 20
net.core.somaxconn = 4096
sysctl.conf的:
nginx.conf:
事件{
}
结果:ab -n 100 -c 10 myindex.php
Server Software: nginx Server Port: 80 Document Length: 3 bytes Concurrency Level: 10 Time taken for tests: 21.128 seconds Complete requests: 100 Failed requests: 32 (Connect: 0, Receive: 0, Length: 32, Exceptions: 0) Total transferred: 17500 bytes HTML transferred: 515 bytes Requests per second: 4.73 [#/sec] (mean) Time per request: 2112.791 [ms] (mean) Time per request: 211.279 [ms] (mean, across all concurrent requests) Transfer rate: 0.81 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 19 1334 2747.0 144 15734 Waiting: 19 1334 2747.0 144 15733 Total: 19 1334 2746.9 144 15734 Percentage of the requests served within a certain time (ms) 50% 144 66% 549 75% 1281 80% 1700 90% 4095 95% 8790 98% 12579 99% 15734 100% 15734 (longest request)
你似乎迷恋nginx调优,而不知道你的架构的哪一部分是最慢的。 nginx不太可能是第一个调整的东西。
将fastcgi目标放在一个上游块中,并将$upstream_addr
和$upstream_response_time
附加到您的日志格式。 如果尚未出现,请将$request_time
附加到您的日志格式,然后比较两次。 如果他们彼此接近,你的应用程序是罪魁祸首。 如果不是那么它是nginx或您的networking。
只有在获得这些信息之后,才能调整nginx。
也许你对keepalive_requests感兴趣? 默认值是100,您可以将其更改为更高的值