Итак, вот ситуация: в настоящее время у нас есть сервер, и мы переходим на AWS. У нас в чем-то идентичная конфигурация, и мы уже пытались запустить тестовый тест apache, поэтому, насколько мне известно, пул PHP-FPM каким-то образом оптимизируется. Но после того, как мы укажем домен в AWS DNS, через час мы получаем 502 плохой шлюз и получаем эту ошибку:
connect() to unix:/var/run/nginx/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 127.0.0.1, server: domain.com, request: \"GET / HTTP/1.0\", upstream: \"fastcgi://unix:/var/run/nginx/php-fpm.sock:\", host: \"domain.com\""
Ты хоть представляешь, что здесь не так? Или есть способ отследить, кто является причиной неисправности шлюза 502?
Ресурсы
- EC2: m4.large
- CPU: 2
- RAM: 8
- Cloudfront
- ELB
- min: 2 instances
- Memcached (AWS Elasticache) for PHP session handling
Настроить
Запуск в AWS с использованием: CloudFront - ELB - NGINX - PHP
Конфигурация
NGINX
worker_processes auto;
worker_connections 4096;
multi_accept on;
use epoll;
send_timeout 3600;
fastcgi_buffers 8 128k;
fastcgi_buffer_size 128k;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 3600;
gzip on;
PHP-FPM
user = nginx
group = nginx
listen = /var/run/nginx/php-fpm.sock
pm = dynamic
pm.max_children = 46
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 5
request_terminate_timeout = 3600
pm.max_requests = 400
process.priority = -19
request_terminate_timeout = 3600
catch_workers_output = yes
Обнаружил проблему в прошлом году. Просто хочу поделиться тем, что узнал. Это произошло из-за сценария S3Fuse + PHP, который будет сканировать папку, в которой монтируется S3Fuse. Это большая нагрузка. S3Fuse очень медленно сканирует файлы, особенно если у вас так много файлов в корзине.
Я думаю, что рекомендуется использовать S3Fuse, если вы будете использовать его только для чтения файлов или для резервного копирования файлов. Альтернативой, которую вы можете использовать в AWS для мультимонтированного хранилища, является EFS.
Шаг 1. Некоторые недостающие конфигурации, пожалуйста, добавьте в свой файл PHP_FPM
listen.allowed_clients = 127.0.0.1
listen.owner = nginx
listen.group = nginx
listen.mode = 0666
Шаг 2: Иногда зависит от версии PHP php-fpm.sock
имя может быть php5-fpm.sock
. Убедитесь, что имя сокета совпадает в конфигурации nginx и php-fpm.
Надеюсь, что это сразу решит вашу проблему.