十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要講解了“php高并發(fā)報(bào)語法錯(cuò)誤如何解決”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“php高并發(fā)報(bào)語法錯(cuò)誤如何解決”吧!

專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)廣南免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
php高并發(fā)報(bào)語法錯(cuò)誤的解決辦法:1、檢查nginx的配置訪問數(shù)或者連接數(shù),并增加nginx的兩個(gè)參數(shù);2、確認(rèn)php-fpm的worker進(jìn)程是否夠用,然后增加worker_connections進(jìn)程的數(shù)量;3、禁用掉記錄的慢日志即可。
Nginx+Php高并發(fā)報(bào)502、504問題解決:
最近在幫公司優(yōu)化php項(xiàng)目。一邊優(yōu)化一邊百度。這個(gè)項(xiàng)目訪問量挺大的(平均每分鐘請求在80000+)。
用了三臺aws服務(wù)器。兩臺8核16G、一臺4核16G。小的這臺做Nginx并跑少量的php-fpm進(jìn)程?;旧戏派先ゾ蛼?。訪問全是502、504。因?yàn)轫?xiàng)目是沒有問題的,之前測試跑過了。然后就開始百度找問題。
1、懷疑是nginx的配置訪問數(shù)或者連接數(shù)太小了扛不住,然后就增加nginx的兩個(gè)參數(shù)。
每個(gè)進(jìn)程允許的最多連接數(shù),理論上每臺nginx服務(wù)器的最大連接數(shù)為worker_processes*worker_connections
worker_connections 5000;
一個(gè)nginx進(jìn)程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開文件數(shù)(ulimit -n)與nginx進(jìn)程數(shù)相除
worker_rlimit_nofile 20000;
php請求的超時(shí)時(shí)間和緩存等
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)程是否夠用,如果不夠用就等于沒有開啟一樣
計(jì)算開啟worker進(jìn)程數(shù)目:
ps -ef | grep 'php-fpm'|grep -v 'master'|grep -v 'grep' |wc -l
計(jì)算正在使用的worker進(jìn)程,正在處理的請求
netstat -anp | grep 'php-fpm'|grep -v 'LISTENING'|grep -v 'php-fpm.conf'|wc -l
如果上面兩個(gè)值接近可以考慮增加worker_connections進(jìn)程的數(shù)量
以及修改修改php-fpm.conf中的php進(jìn)程數(shù)。無論是調(diào)大還是調(diào)小這幾個(gè)參數(shù)都不行。。。。絕望了!
修改了php-fpm.conf的日志級別log_level = debug。在error_log文件中看到了一下錯(cuò)誤:
[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這個(gè)錯(cuò)誤。上面說需要禁用掉記錄的慢日志;slowlog = /var/log/php-fpm/slow.log;request_slowlog_timeout = 15s。此時(shí),我才知道php也是記錄訪問時(shí)請求比較慢的日志。然后打開慢日志文件。發(fā)現(xiàn)全是php請求redis的錯(cuò)誤日志。
找到問題原因了,就是php請求redis數(shù)據(jù)的時(shí)候,應(yīng)該是請求的連接數(shù)太多了。redis連接不上導(dǎo)致的問題。。因?yàn)榇颂幍臉I(yè)務(wù)比較復(fù)雜,所以redis的key是多個(gè)字段拼接的。查詢的時(shí)候是用的模糊查詢。所有導(dǎo)致redis的性能下降,后面大量的請求連接不上redis。因?yàn)檫@塊兒鏈接redis的代碼是我改的。。于是我又把原來請求MySQL的代碼還原了。
感謝各位的閱讀,以上就是“php高并發(fā)報(bào)語法錯(cuò)誤如何解決”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對php高并發(fā)報(bào)語法錯(cuò)誤如何解決這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!