Я не знаю, как правильно указать эту проблему, я не совсем специалист по серверам. Буду рад предоставить дополнительные данные по запросу.
У меня есть веб-приложение PHP, работающее на сервере Ubuntu с nginx и PHP-FPM (общение через файл сокета). Это приложение общается с другим внутренним сервером через curl. И у меня есть один запрос, выполнение которого занимает минуту. Когда я нажимаю этот запрос, весь сервер перестает отвечать. Пока этот длинный запрос находится на рассмотрении, выполнение других запросов невозможно. Когда я перезапускаю PHP-FPM или это соединение умирает само по себе - все снова становится нормально.
Я пытался изменить некоторые параметры nginx и PHP FPM, связанные с параллелизмом, но безуспешно.
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;
}
[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, чтобы сузить эту проблему.