您好,登錄后才能下訂單哦!
這篇文章主要講解了“php高并發報語法錯誤如何解決”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php高并發報語法錯誤如何解決”吧!
php高并發報語法錯誤的解決辦法:1、檢查nginx的配置訪問數或者連接數,并增加nginx的兩個參數;2、確認php-fpm的worker進程是否夠用,然后增加worker_connections進程的數量;3、禁用掉記錄的慢日志即可。
Nginx+Php高并發報502、504問題解決:
最近在幫公司優化php項目。一邊優化一邊百度。這個項目訪問量挺大的(平均每分鐘請求在80000+)。
用了三臺aws服務器。兩臺8核16G、一臺4核16G。小的這臺做Nginx并跑少量的php-fpm進程。基本上放上去就掛。訪問全是502、504。因為項目是沒有問題的,之前測試跑過了。然后就開始百度找問題。
1、懷疑是nginx的配置訪問數或者連接數太小了扛不住,然后就增加nginx的兩個參數。
每個進程允許的最多連接數,理論上每臺nginx服務器的最大連接數為worker_processes*worker_connections
worker_connections 5000;
一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與nginx進程數相除
worker_rlimit_nofile 20000;
php請求的超時時間和緩存等
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
nginx設置完了 重啟一下。。但是測試了一下 完全沒反應。
2、懷疑是php的配置問題。
確認php-fpm的worker進程是否夠用,如果不夠用就等于沒有開啟一樣
計算開啟worker進程數目:
ps -ef | grep 'php-fpm'|grep -v 'master'|grep -v 'grep' |wc -l
計算正在使用的worker進程,正在處理的請求
netstat -anp | grep 'php-fpm'|grep -v 'LISTENING'|grep -v 'php-fpm.conf'|wc -l
如果上面兩個值接近可以考慮增加worker_connections進程的數量
以及修改修改php-fpm.conf中的php進程數。無論是調大還是調小這幾個參數都不行。。。。絕望了!
修改了php-fpm.conf的日志級別log_level = debug。在error_log文件中看到了一下錯誤:
[29-Mar-2014 22:40:10] ERROR: failed to ptrace(PEEKDATA) pid 4276: Input/output error (5)
[29-Mar-2014 22:53:54] ERROR: failed to ptrace(PEEKDATA) pid 4319: Input/output error (5)
[29-Mar-2014 22:56:30] ERROR: failed to ptrace(PEEKDATA) pid 4342: Input/output error (5)
于是,我又開始google這個錯誤。上面說需要禁用掉記錄的慢日志;slowlog = /var/log/php-fpm/slow.log;request_slowlog_timeout = 15s。此時,我才知道php也是記錄訪問時請求比較慢的日志。然后打開慢日志文件。發現全是php請求redis的錯誤日志。
找到問題原因了,就是php請求redis數據的時候,應該是請求的連接數太多了。redis連接不上導致的問題。。因為此處的業務比較復雜,所以redis的key是多個字段拼接的。查詢的時候是用的模糊查詢。所有導致redis的性能下降,后面大量的請求連接不上redis。因為這塊兒鏈接redis的代碼是我改的。。于是我又把原來請求mysql的代碼還原了。
感謝各位的閱讀,以上就是“php高并發報語法錯誤如何解決”的內容了,經過本文的學習后,相信大家對php高并發報語法錯誤如何解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。