nginx不能执行很多请求

我有一个关于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的:

  • net.ipv4.tcp_window_scaling = 1
  • net.core.rmem_max = 16777216
  • net.core.wmem_max = 16777216
  • net.ipv4.tcp_rmem = 4096 87380 16777216
  • net.ipv4.tcp_wmem = 4096 65536 16777216
  • net.ipv4.ip_local_port_range = 1024 65000

nginx.conf:

  • worker_processes 8;
  • worker_rlimit_nofile 1024000;

事件{

  • worker_connections 10240;
  • 使用epoll;
  • multi_accept on;

}

  • 发送文件;
  • keepalive_timeout 2;
  • types_hash_max_size 2048;
  • server_tokensclosures;
  • client_max_body_size 1024m;
  • client_body_buffer_size 128k;
  • server_names_hash_bucket_size 128;
  • server_names_hash_max_size 10240;
  • fastcgi_buffers 8 16k;
  • fastcgi_buffer_size 32k;
  • fastcgi_connect_timeout 300;
  • fastcgi_send_timeout 300;
  • fastcgi_read_timeout 300;

结果: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,您可以将其更改为更高的值