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

Сервер не отвечает, когда одно соединение заблокировано

Я не знаю, как правильно указать эту проблему, я не совсем специалист по серверам. Буду рад предоставить дополнительные данные по запросу.

У меня есть веб-приложение PHP, работающее на сервере Ubuntu с nginx и PHP-FPM (общение через файл сокета). Это приложение общается с другим внутренним сервером через curl. И у меня есть один запрос, выполнение которого занимает минуту. Когда я нажимаю этот запрос, весь сервер перестает отвечать. Пока этот длинный запрос находится на рассмотрении, выполнение других запросов невозможно. Когда я перезапускаю PHP-FPM или это соединение умирает само по себе - все снова становится нормально.

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

Конфигурация сервера nginx:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com/web;

    # removing trailing dot
    if ($http_host ~ "\.$" ) {
        rewrite ^(.*) $scheme://$host$1 permanent;
    }

    location / {
        # try to serve file directly, fallback to rewrite
        try_files $uri @rewriteapp;
    }

    location /js/which.js {
        rewrite . /which.php last;
    }

    location @rewriteapp {
        # rewrite all to app_dev.php
        rewrite ^(.*)$ /app_dev.php/$1 last;
    }

    location ~ ^/(app_dev\.php|which\.php)(/|$) {
        fastcgi_pass unix:/var/run/php-fpm/example.com.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
    }

    gzip on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;

    gzip_types
        text/plain
        text/css
        application/json
        application/x-javascript
        text/xml
        application/xml
        application/xml+rss
        text/javascript
        application/javascript
        text/x-js
    ;

    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    # Logging configuration.
    error_log /var/www/example.com/var/logs/nginx/error.log info;
}

Конфигурация PHP FPM:

[example.com]

user = fpm-example.com
group = fpm-example.com
listen = /var/run/php-fpm/example.com.sock
listen.owner = nginx
listen.group = nginx

pm = dynamic
pm.max_children = 100
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 30

request_terminate_timeout = 35s

catch_workers_output = yes

# Logging
php_flag[display_errors] = off
php_admin_value[error_log] = /var/www/example.com/var/logs/php-fpm/errors.log
php_admin_flag[log_errors] = on

Что могло быть причиной этого?

Извините, на самом деле это не проблема сервера. После дополнительных тестов выяснилось, что это проблема самого приложения, а не сервера. Я создал Другой вопрос на StackOverflow, чтобы сузить эту проблему.