Назад | Перейти на главную страницу

nginx не может выполнять много запросов

У меня вопрос по настройке nginx.

У меня есть приложение, которое я хочу запускать 200 раз в секунду.

Я создал файл bash и использовал wget с переключателем bqO для выполнения.

Но есть проблема.

Когда количество запросов больше 100. nginx не отвечает на другой запрос и зависает в загрузке, пока не будет выполнен один запрос.

Однако я установил pm.max_children и установил worker_connections равным 200.

Есть ли у вас какие-либо предложения по решению этой проблемы или есть какой-либо тюнер, такой как "MySQL Tuner", для настройки nginx.

мои конфиги: 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, либо ваша сеть.

Только после того, как вы получите эту информацию, можно будет приступить к настройке nginx.

Может быть тебе интересно keepalive_requests ? Значение по умолчанию - 100, вы можете изменить его на более высокое значение.