你的服务器是功能强大,足以应付> 500 000要求每天应用程序(如果它是明智的书面)。
问题是因为PHP-FPM不能有更多的子进程来处理更多的请求。
在apache中,它自动以额外的apache进程启动。
但是Nginx + PHP-FPM给了你自由如何处理这种情况。
只要改变你的FPM池的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;
}
p.s.请不要将listen属性更改为ip:port
- 套接字更快,因为它在ip:port
中通过ip和端口创建网络连接,但是在套接字版本中它只是打开.sock“文件”。
p.s.不要修改fastcgi_buffers
等指令,它不会修复坏的网关问题,因为php-fpm过程较少。
在我的服务器,它的默认:
fastcgi_buffers 32 1024k;
fastcgi_buffer_size 1024k;
附:禁用不必要的日志记录(nginx.conf)不要让你的磁盘驱动器有更多的IO负载:
access_log off;
error_log /var/log/nginx/error.log crit;
如果你需要监控使用newrelic
和监视你的服务器的网络,CPU,MEM活动
感谢这个伟大的回答:) –
它是如何有益的!乐意帮助(: – num8er
实际上它帮助我允许更多的并发请求..并且我将项目的特定部分从laravel移动到phalcon ..现在它工作得很好 –