PHP-FPM перестает отвечать на aws [время ожидания восходящего потока (110: время ожидания соединения истекло)]

У меня есть сайт, работающий на aws, но он регулярно перестает работать. И как только я перезапускаю PHP-fpm, он начинает работать без сбоев.

Это ошибка, которую я получаю в журнале ошибок, когда сайт выдает 504 -

2308#2308: *3310 истекло время ожидания восходящего потока (110: время ожидания соединения истекло) при чтении заголовка ответа восходящего потока, клиент: 54.215.160.135, сервер: api.mysite.com, запрос: "POST /notfound HTTP/1.1" , вверх по течению: "fastcgi://unix:/var/run/php/php7.2-fpm.sock"

Я пытался решить это, но не смог решить. Я также попытался переустановить PHP-FPM, но не решил проблему.

вот мой файл конфигурации nginx -

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
   fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
   fastcgi_index index.php;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

   fastcgi_intercept_errors off;
   fastcgi_buffer_size 16k;
   fastcgi_buffers 4 16k;
   fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
   fastcgi_read_timeout 300;
    include fastcgi_params;
}

Также, когда я проверяю статус FPM, он показывает -

  ● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-01-04 04:23:13 UTC; 1h 52min ago
       Docs: man:php-fpm7.2(8)
   Main PID: 2314 (php-fpm7.2)
     Status: "Processes active: 5, idle: 0, Requests: 1511, slow: 0, Traffic: 0req/sec"
      Tasks: 6 (limit: 1152)
     CGroup: /system.slice/php7.2-fpm.service
             ├─2314 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
             ├─3578 php-fpm: pool www
             ├─3579 php-fpm: pool www
             ├─3633 php-fpm: pool www
             ├─3784 php-fpm: pool www
             └─3786 php-fpm: pool www

В pool.d/www.conf

    user = nginx ##previously it was  www-data
    group = www-data
    listen.owner = nginx ##previously it was  www-data
    listen.group = nginx ##previously it was  www-data
    listen.mode = 0660
    listen = /run/php/php7.2-fpm.sock

Как я могу решить эту проблему?


person Sunil Chhimpa    schedule 04.01.2020    source источник
comment
Что ж, похоже, поступает слишком много запросов и недостаточно рабочих процессов для их выполнения. Следующая остановка - включить профилирование для PHP-FPM как-то так .com/questions/15465333/ и посмотрите, сколько времени в среднем занимает каждый запрос до получения ответа.   -  person Daniel Protopopov    schedule 04.01.2020
comment
@DanielProtopopov Может быть. Я проверил это для более чем 1000 последовательных запросов, и сайт работает нормально. и это новый сайт, получающий небольшой трафик. И если это так, то какое решение?   -  person Sunil Chhimpa    schedule 04.01.2020
comment
Решение состоит в том, чтобы сначала протестировать возможности с помощью профилирования, а затем либо увеличить количество рабочих (если возможно), либо настроить конфигурацию сервера, либо перейти на лучший экземпляр. Например, экземпляр AWS t2-medium имеет 2 VCPU, а рекомендуемое ограничение — один рабочий на ядро, поэтому необходимо будет перейти на экземпляр более высокого уровня или проверить, как он работает за пределами рекомендуемых параметров. Кроме того, последовательный отличается от параллельного, и именно здесь вы можете потерпеть неудачу, я бы рекомендовал использовать тестер стресс-нагрузки для имитации нескольких одновременных запросов.   -  person Daniel Protopopov    schedule 04.01.2020