你的服務器是功能強大,足以應付> 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 ..現在它工作得很好 –