Таймауты Nginx / php-fpm

У меня есть установка, состоящая из балансировщика нагрузки, двух веб-серверов с nginx / php-fpm7.1 и сервера базы данных с mariadb.

В течение последних нескольких месяцев я изо всех сил пытался выяснить причину и разрешить нерегулярные тайм-ауты, и я, наконец, прошу здесь о мыслях. Насколько мне известно, во время этого события ничего не изменилось. Кроме того, я видел, что php-fpm полностью отказывает, и мне пришлось перезапустить службу.

Я вижу такие ошибки, как следующие, и получаю предупреждения в течение дня через xymon:

2018/07/11 14:27:23 [error] 13461#13461: *920760 upstream timed out (110: Connection timed out) while reading response header from upstream, client: *.*.*.*, server: www.something.com, request: "GET /something/something HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/something.com.sock", host: "www.something.com"

В установке размещено около 5 сайтов. , только один работает через балансировщик нагрузки, все остальные направлены на веб-сервер 1, так как я получаю предупреждения для всех сайтов, которые просматриваю, только на веб-сервере 1.

Общая конфигурация nginx, используемая всеми сайтами, выглядит следующим образом:

worker_processes        2;

user    nginx www-data;
pid     /run/nginx.pid;
worker_rlimit_nofile     100000;

events {
    worker_connections  1024;
    multi_accept        on;
    use                 epoll;
}

http {
    include             mime.types;
    default_type        application/octet-stream;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    keepalive_requests 200;
    client_max_body_size 16m;
    client_body_timeout 32;
    client_header_timeout 32;
    reset_timedout_connection   on;
    send_timeout   600;
    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;

    fastcgi_buffers 8 128k;
    fastcgi_buffer_size 256k;

    open_file_cache max=10000 inactive=30s;
    open_file_cache_valid 60s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

Кроме того, У меня есть местоположения, похожие на это, в каждом vhost

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/something.com.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 30s;
        include fastcgi_params;
    }

И каждый сайт имеет свой собственный пул fpm, каждый из которых имеет следующие изменения:

pm = ondemand
pm.max_children = 12
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 15000

Главный сайт, который проходит через балансировщик нагрузки, имеет следующие изменения fpm в его пуле

pm = dynamic
pm.max_children = 100
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 8
pm.max_requests = 15000

Все, что я предпринял, не привело ни к каким изменениям, включая обновление всех пакетов yum и перезагрузку. В настоящее время на этих машинах нет высокой нагрузки, хотя это может случиться.

Любые мысли или помощь относительно дальнейшей отладки были бы очень полезны!

Обновление

Журнал медленных сообщений действительно сообщает вот так:

[11-Jul-2018 14:53:12] WARNING: [pool something.com] child 53001, script '/var/www/something.com/index.php' (request: "GET /index.php?q=/404.html&") executing too slow (11.267915 sec), logging

Возможно, тогда это больше связано с сервером maria?

0
задан 11 July 2018 в 18:03
1 ответ

Скорее всего, со временем изменился размер базы данных на веб-сервере.

Это и, возможно, неэффективные операторы SQL / структура БД могут привести к тому, что запросы к БД займут слишком много времени, и, следовательно, произойдет тайм-аут.

0
ответ дан 5 December 2019 в 05:39

Теги

Похожие вопросы