首先让我解释一下情况,我有一台具有64 GB RAM和20 Core和40GB(SSD)的服务器。我有大约2000个并发用户
1周前,我在apache 7中使用apache,但是cpu有时是80%,有时甚至是101%,这是因为从apache到Nginx,从MySql到MongoDB之后,巨大的sql插入了。cpu约为8%。
我的问题现在是Nginx很多时候返回502错误的网关响应,我寻找了一些答案,但是一点都没有帮助,但是当我将fpm套接字更改为portlisten = /var/run/php5-fpm.sock
到listen = 127.0.0.1:9000
ngnix时,总是返回502,而我无法弄清楚知道出什么问题了。
您的服务器功能强大,每天可以处理超过500 000个应用程序请求(如果编写得当)。
问题是因为PHP-FPM不能有更多的子进程来服务更多的请求。
在apache中,它是自动从其他apache进程开始的。
但是Nginx + PHP-FPM为您提供了处理这种情况的自由。
只需更改您的fpm pool conf :(/etc/php/php-fpm.d/www.conf
或您使用的任何方式)
确保它具有以下内容:
pm = static
pm.max_children = 4096
pm.process_idle_timeout = 10s
pm.max_requests = 32
然后重新启动php fpm
还进行编辑nginx.conf
并确保其顶部有以下字段:
user http;
worker_processes auto;
events {
worker_connections 4096;
multi_accept on;
use epoll;
}
ps不会将listen属性更改为-socketip:port
更快,因为ip:port
它在cuz中通过ip和port创建网络连接,但是在socket版本中,它只是打开.sock“ file”。
ps不要更改fastcgi_buffers
etc指令,因为更少的php-fpm进程,它不会解决网关错误的问题。
在我的服务器上,它是默认值:
fastcgi_buffers 32 1024k;
fastcgi_buffer_size 1024k;
ps禁用不必要的日志记录(nginx.conf),以使您的磁盘驱动器没有更多的IO负载:
access_log off;
error_log /var/log/nginx/error.log crit;
如果您需要监视使用情况newrelic
并监视服务器的网络,CPU,内存活动
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句