nginx 无法执行许多请求

nginx 无法执行许多请求

我有一个关于 nginx tune 的问题。

我有一个应用程序,希望每秒执行 200 次。

我创建了 bash 文件并使用带有 bqO 开关的 wget 进行执行。

但它有一个问题。

当请求数大于100时,nginx不会响应另一个请求,而是停留在加载状态,直到一个请求完成。

但是我设置了 pm.max_children 并将 worker_connections 设置为 200。

您对解决这个问题有什么建议吗?或者是否有类似“MySQL Tuner”的调整器可以调整 nginx。

我的配置:php-fpm55.conf:

pm = 按需 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

净.核心.somaxconn = 4096

系统配置信息:

  • 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:

  • 工作进程 8;
  • worker_rlimit_nofile 1024000;

事件 {

  • 工人连接10240;
  • 使用epoll;
  • 多接受;

}

  • 发送文件;
  • 保持活动超时2;
  • 类型_hash_max_size 2048;
  • 服务器令牌关闭;
  • 客户端最大主体大小1024米;
  • 客户端主体缓冲区大小128k;
  • 服务器名称哈希桶大小128;
  • 服务器名称哈希最大大小10240;
  • fastcgi_缓冲区 8 16k;
  • fastcgi_buffer_大小为32k;
  • fastcgi_连接超时300;
  • fastcgi_发送超时300;
  • fastcgi_读取超时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)

答案1

您似乎痴迷于 nginx 调优,却不知道架构中哪个部分最慢。nginx 不太可能是第一个需要调优的对象。

将您的 fastcgi 目标放在一个上游块中,并将$upstream_addr和附加$upstream_response_time到您的日志格式中。如果尚不存在,请附加$request_time到您的日志格式,然后比较两次。如果它们彼此接近,则您的应用程序就是罪魁祸首。如果不是,那么它要么是 nginx,要么是您的网络。

只有在获得这些信息后,它才可能与调整 nginx 有意义。

答案2

也许你感兴趣keepalive_requests? 默认值为 100,您可以将其更改为更高的值

相关内容