溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php高并發(fā)報語法錯誤如何解決

發(fā)布時間:2022-12-15 09:39:29 來源:億速云 閱讀:100 作者:iii 欄目:編程語言

這篇文章主要講解了“php高并發(fā)報語法錯誤如何解決”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“php高并發(fā)報語法錯誤如何解決”吧!

php高并發(fā)報語法錯誤的解決辦法:1、檢查nginx的配置訪問數(shù)或者連接數(shù),并增加nginx的兩個參數(shù);2、確認(rèn)php-fpm的worker進(jìn)程是否夠用,然后增加worker_connections進(jìn)程的數(shù)量;3、禁用掉記錄的慢日志即可。

Nginx+Php高并發(fā)報502、504問題解決:

最近在幫公司優(yōu)化php項目。一邊優(yōu)化一邊百度。這個項目訪問量挺大的(平均每分鐘請求在80000+)。

用了三臺aws服務(wù)器。兩臺8核16G、一臺4核16G。小的這臺做Nginx并跑少量的php-fpm進(jìn)程。基本上放上去就掛。訪問全是502、504。因為項目是沒有問題的,之前測試跑過了。然后就開始百度找問題。

1、懷疑是nginx的配置訪問數(shù)或者連接數(shù)太小了扛不住,然后就增加nginx的兩個參數(shù)。

每個進(jìn)程允許的最多連接數(shù),理論上每臺nginx服務(wù)器的最大連接數(shù)為worker_processes*worker_connections

 worker_connections 5000;

一個nginx進(jìn)程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開文件數(shù)(ulimit -n)與nginx進(jìn)程數(shù)相除

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設(shè)置完了 重啟一下。。但是測試了一下 完全沒反應(yīng)。

2、懷疑是php的配置問題。

確認(rèn)php-fpm的worker進(jìn)程是否夠用,如果不夠用就等于沒有開啟一樣

計算開啟worker進(jìn)程數(shù)目:

ps -ef | grep 'php-fpm'|grep -v 'master'|grep -v 'grep' |wc -l

計算正在使用的worker進(jìn)程,正在處理的請求

netstat -anp | grep 'php-fpm'|grep -v 'LISTENING'|grep -v 'php-fpm.conf'|wc -l

如果上面兩個值接近可以考慮增加worker_connections進(jìn)程的數(shù)量

以及修改修改php-fpm.conf中的php進(jìn)程數(shù)。無論是調(diào)大還是調(diào)小這幾個參數(shù)都不行。。。。絕望了!

修改了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也是記錄訪問時請求比較慢的日志。然后打開慢日志文件。發(fā)現(xiàn)全是php請求redis的錯誤日志。

找到問題原因了,就是php請求redis數(shù)據(jù)的時候,應(yīng)該是請求的連接數(shù)太多了。redis連接不上導(dǎo)致的問題。。因為此處的業(yè)務(wù)比較復(fù)雜,所以redis的key是多個字段拼接的。查詢的時候是用的模糊查詢。所有導(dǎo)致redis的性能下降,后面大量的請求連接不上redis。因為這塊兒鏈接redis的代碼是我改的。。于是我又把原來請求mysql的代碼還原了。

感謝各位的閱讀,以上就是“php高并發(fā)報語法錯誤如何解決”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對php高并發(fā)報語法錯誤如何解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI