错误502在nginx + php5-fpm中
我有一些错误的主题。 服务器不高负载:〜15%的CPU,有几个Gb的内存,硬盘不是buisy。 但是,错误502大约在3%的情况下抛出。
程序:Debian 6,nginx / 0.7.62,php5-fpm(5.3.3-1)。
在nginx的error.log中是这个错误:
connect() to unix:/var/run/php5-fpm.sock failed
php5-fpm的状态通常是这样的:
accepted conn: 41680 pool: www process manager: dynamic idle processes: 258 active processes: 1 total processes: 259
我认为,这意味着加载不高。
我已经增加了积压参数:在sysctl – net.core.somaxconn = 5000,在php-fpm池 – listen.backlog = 5000。没有效果。
我引用一个configuration:
/etc/nginx/nginx.conf
user www-data; worker_processes 8; timer_resolution 100ms; worker_rlimit_nofile 20240; worker_priority -5; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 2048; use epoll; # multi_accept on; } http { include /etc/nginx/mime.types; access_log /var/log/nginx/access.log; sendfile on; tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_min_length 1100; gzip_buffers 64 8k; gzip_comp_level 3; gzip_http_version 1.1; gzip_proxied any; gzip_types text/plain application/xml application/x-javascript text/css; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; client_max_body_size 100M; server_tokens off; }
的/ etc / nginx的/ php_location
fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; fastcgi_buffers 256 128k; #fastcgi_buffer_size 16k; #fastcgi_busy_buffers_size 256k; fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s; include fastcgi_params;
php-fpm池
[www] listen = /var/run/php5-fpm.sock listen.backlog = 5000 listen.owner = www-data listen.group = www-data listen.mode = 0666 user = www-data group = www-data pm = dynamic pm.max_children = 1024 pm.start_servers = 64 pm.min_spare_servers = 64 pm.max_spare_servers = 128 pm.max_requests = 32000 pm.status_path = /system/php5-fpm-status slowlog = /var/www/log/php-fpm.log.slow chdir = /var/www
我可以做什么来优化这个系统,并使这个使用所有的服务器资源?
PS。 对不起,我的英文不好。
问题是套接字本身,它在高负载情况下的问题是众所周知的。 请考虑使用TCP \ IP连接而不是unix套接字,因为您需要进行这些更改:
- 在php-fpm池configuration中,用
listen = 127.0.0.1:7777
replacelisten = /var/run/php5-fpm.sock
- 在/ etc / nginx / php_location中replace
fastcgi_pass unix:/var/run/php5-fpm.sock;
用fastcgi_pass 127.0.0.1:7777;
在Centos 7上,Plesk 12.5
硬盘已满并且某些服务失败后,我遇到了这个问题。 其他域名工作完美,但没有一个只给了我502和类似的超时。 从错误日志:
[crit] 3112#0: *65746768 connect() to unix:///var/www/vhosts/system/sub.domain.de/php-fpm.sock failed (2: No such file or directory) while connecting to upstream
为了解决这个问题,我必须(首先使空间可用,然后)重新启动php-fpm和nginx – 然后这个错误消失了!
这个文件没有创build的唯一原因是configuration在/etc/php-fpm.d/www.conf
更改listen = 127.0.0.1:9000
使用listen = /var/run/php-fpm/php-fpm.sock
然后重新启动nginx和php-fpm
我同样的问题,但不希望从套接字切换到TCP / IP。 重新启动php-fpm和nginx将解决这个问题。
sudo /etc/init.d/php-fpm restart sudo /etc/init.d/nginx restart