- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機構(gòu):新網(wǎng)數(shù)碼
不管你是做運維還是做開發(fā),哪怕你是游客,時不時會遇到502 Bad Gateway或504 Gateway Time-out。出現(xiàn)這頁面,把服務(wù)重啟下,再實在不行重啟下服務(wù)器,問題就解決了,特殊情況請繼續(xù)閱讀。
502 Bad Gateway:作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時,從上游服務(wù)器接收到無效的響應(yīng)。
504 Gateway Time-out:作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時,未能及時從上游服務(wù)器(URI標(biāo)識出的服務(wù)器,例如HTTP、FTP、LDAP)或者輔助服務(wù)器(例如DNS)收到響應(yīng)。
將請求提交給網(wǎng)關(guān)如php-fpm執(zhí)行,但是由于某些原因沒有執(zhí)行完畢導(dǎo)致php-fpm進程終止執(zhí)行。說到此,這個問題就很明了了,與網(wǎng)關(guān)服務(wù)如php-fpm的配置有關(guān)了。
php-fpm.conf
配置文件中有兩個參數(shù)就需要你考慮到,分別是max_children
和request_terminate_timeout
。
max_children最大子進程數(shù),在高并發(fā)請求下,達到php-fpm最大響應(yīng)數(shù),后續(xù)的請求就會出現(xiàn)502錯誤的。可以通過netstat命令來查看當(dāng)前連接數(shù)。
request_terminate_timeout
設(shè)置單個請求的超時終止時間。還應(yīng)該注意到php.ini
中的max_execution_time
參數(shù)。當(dāng)請求終止時,也會出現(xiàn)502錯誤的。
當(dāng)積累了大量的php請求,你重啟php-fpm釋放資源,但一兩分鐘不到,502又再次呈現(xiàn),這是什么原因?qū)е碌哪兀?這時還應(yīng)該考慮到數(shù)據(jù)庫,查看下數(shù)據(jù)庫進程是否有大量的locked進程,數(shù)據(jù)庫死鎖導(dǎo)致超時,前端終止了繼續(xù)請求,但是SQL語句還在等待釋放鎖,這時就要重啟數(shù)據(jù)庫服務(wù)了或kill掉死鎖SQL進程了。
對于長時間的請求可以考慮使用異步方式,可以參閱《關(guān)于PHP實現(xiàn)異步操作的研究》。
504錯誤一般是與nginx.conf
配置有關(guān)了。主要與以下幾個參數(shù)有關(guān):fastcgi_connect_timeout、fastcgi_send_timeout、fastcgi_read_timeout、fastcgi_buffer_size、fastcgi_buffers、fastcgi_busy_buffers_size、fastcgi_temp_file_write_size、fastcgi_intercept_errors
。特別是前三個超時時間。如果fastcgi
緩沖區(qū)太小會導(dǎo)致fastcgi
進程被掛起從而演變?yōu)?04錯誤。
總而言之,502錯誤主要從四個方向入手:
max_children
request_terminate_timeout、max_execution_time
數(shù)據(jù)庫
網(wǎng)關(guān)服務(wù)是否啟動如php-fpm
504錯誤主要查看nginx.conf關(guān)于網(wǎng)關(guān)如fastcgi的配置。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP