- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會(huì )理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構許可:滇D3-20230001
- 代理域名注冊服務(wù)機構:新網(wǎng)數碼
不管是面試還是工作中,經(jīng)常會(huì )碰到需要通過(guò)HTTP狀態(tài)碼去判斷問(wèn)題的情況,比如對于后臺RD,給到前端FE的一個(gè)接口,出現502或者504 error錯誤,FE就會(huì )說(shuō)接口存在問(wèn)題,如果沒(méi)有知識儲備,那就只能RD自己背鍋...但是這其實(shí)更多是需要運維OP去排查。
1XX:Infomational(信息性狀態(tài)碼)接收的請求正在處理
2XX:Success(成功狀態(tài)碼)請求正常處理完畢
3XX:Redirection(重定向狀態(tài)碼)需要進(jìn)行附加操作以完成請求
4XX:Client Error(客戶(hù)端錯誤狀態(tài)碼)服務(wù)器無(wú)法處理請求
5XX:Server Error(服務(wù)器錯誤狀態(tài)碼)服務(wù)器處理請求出錯
2XX的響應結果表明請求被正常處理了。
表示從客戶(hù)端發(fā)來(lái)的請求在服務(wù)器端被正常處理了。
在響應報文中,隨狀態(tài)碼一起返回的信息會(huì )因方法的不同而發(fā)生改變。比如,使用GET方法時(shí),對應請求資源的實(shí)體會(huì )作為響應返回;而?用HEAD方法時(shí),對于請求資源的實(shí)體首部不隨報文主體作為響應返回(即在響應中只返回首部,不會(huì )返回實(shí)體的主體部分)。
該狀態(tài)碼代表服務(wù)器接收的請求已成功處理,但在返回的響應報文中不含實(shí)體的主體部分。另外,也不允許返回任何實(shí)體的主體。比如,當從瀏覽器發(fā)出請求處理后,返回204響應,那么瀏覽器顯示的頁(yè)面不發(fā)生更新。
該狀態(tài)碼表示客戶(hù)端進(jìn)行了范圍請求,而服務(wù)器成功執行了這部分的GET請求。響應報文中包含有Content—Range指定范圍的實(shí)體部分。
3XX響應結果表明瀏覽器需要執行特殊的處理以正確處理請?。
永久性重定向。被請求的資源已永久移動(dòng)到新位置,并且將來(lái)任何對此資源的引用都應該使用本響應返回的若干個(gè)URI之一。如果可能,擁有鏈接編輯功能的客戶(hù)端應當自動(dòng)把請求的地址修改為從服務(wù)器反饋回來(lái)的地址。這是應該按Location首部字段提示的URI更新。
臨時(shí)性重定向。請求的資源現在臨時(shí)從不同的URI響應請求。由于這樣的重定向是臨時(shí)的,客戶(hù)端應當繼續向原有地址發(fā)送以后的請求。只有在Cache-Control或Expires中進(jìn)行了指定的情況下,這個(gè)響應才是可緩存的。
比如訪(fǎng)問(wèn)http://www.tjdsmy.cn/301.php會(huì )重定向到http://www.tjdsmy.cn/a.php
如上圖,請求后的狀態(tài)碼為301,并在返回頭的Location中會(huì )指明重定向的目標地址。
比如未登陸的用戶(hù)訪(fǎng)問(wèn)用戶(hù)中心重定向到登陸頁(yè)面、訪(fǎng)問(wèn)404頁(yè)面會(huì )自動(dòng)重定向到首頁(yè)等等
rewrite后面接上permanent就代表301跳
//把來(lái)自301.php的請求301跳到 www.tjdsmy.cn if ($host != '301.php') { rewrite ^/(.*)$ http://www.tjdsmy.cn/$1 permanent; }
接上redirect代表302跳
//把來(lái)自301.php的請求301跳到 www.tjdsmy.cn if ($host != '301.php') { rewrite ^/(.*)$ http://www.tjdsmy.cn/$1 redirect; }
該狀態(tài)碼表示由于請求對應得資源存在著(zhù)另一個(gè)URI,應使用GET方法定向獲取獲取請求的資源。
303和302有著(zhù)相同的功能,但是303狀態(tài)碼明確表示客戶(hù)端采用GET方法獲取資源。
該狀態(tài)表示客戶(hù)端發(fā)送附帶條件的請求時(shí),服務(wù)端允許請求訪(fǎng)問(wèn)資源,但未滿(mǎn)足條件的情況。304狀態(tài)碼返回時(shí),不包含任何響應的主體部分。304雖然被劃分到3XX類(lèi)別中,但是沒(méi)有和重定向相關(guān)。
臨時(shí)重定向。該狀態(tài)碼與302 Found有著(zhù)相同的含義。
當301、302、303響應狀態(tài)碼返回時(shí),幾乎所有的瀏覽器都會(huì )把POST改成GET,并刪除請求報文內的主體,之后請求會(huì )自動(dòng)再次發(fā)生。
但是301、302標準是禁止將POST方法改變成GET方法的,雖然大家都這么做了。
所以307會(huì )遵照標準,不會(huì )從POST變?yōu)镚ET。但是響應時(shí)的行為,每種瀏覽器有可能出現不同的情況。
4XX的響應結果表明客戶(hù)端是發(fā)生錯誤的原因所在。
該狀態(tài)碼表示請求報文中存在錯誤。當錯誤發(fā)生時(shí),需修改請求的內容后再次發(fā)生請求。另外,瀏覽器會(huì )像200 OK一樣對待該狀態(tài)碼。
該狀態(tài)碼表示發(fā)送的請求需要有通過(guò)HTTP認證的認證信息。另外若之前已進(jìn)行過(guò)1次請求,則表示用戶(hù)認證失敗。
返回含有401的響應必須包含一個(gè)適用于被請求資源的WWW-Authenticate首部用以質(zhì)詢(xún)用戶(hù)信息。當瀏覽器初次接收到401響應,會(huì )彈出認證用的對話(huà)窗口。
該狀態(tài)碼表明對請求資源的訪(fǎng)問(wèn)被服務(wù)器拒絕了。服務(wù)器端沒(méi)有必要給出拒絕的詳細理由,但如果想作說(shuō)明的話(huà),可以在實(shí)體的主體部分對原因進(jìn)行描述,這樣就能讓用戶(hù)看到了。
未獲得文件系統的訪(fǎng)問(wèn)授權,訪(fǎng)問(wèn)權限出現某些問(wèn)題等情況都可能出現403。
該狀態(tài)碼表明服務(wù)器上無(wú)法找到請求的資源。除此之外,也可以在服務(wù)器端拒絕請求且不想說(shuō)明理由時(shí)使用。
5XX的響應結果表明服務(wù)器本身發(fā)生錯誤。
該狀態(tài)碼表明服務(wù)器端在執行請求時(shí)發(fā)生了錯誤。也可能是Web應用存在的bug或某些臨時(shí)的故障。
該狀態(tài)碼表明服務(wù)器暫時(shí)處于超負荷或正在進(jìn)行停機維護,現在無(wú)法處理請求。如果事先得知解除以上狀況需要的時(shí)間,最好寫(xiě)入RetryAfter首部字段再返回給客戶(hù)端。
將請求提交給網(wǎng)關(guān)如php-fpm執行,但是由于某些原因沒(méi)有執行完畢導致php-fpm進(jìn)程終止執行。說(shuō)到此,這個(gè)問(wèn)題就很明了了,與網(wǎng)關(guān)服務(wù)如php-fpm的配置有關(guān)了。
php-fpm.conf配置文件中有兩個(gè)參數就需要你考慮到,分別是max_children和request_terminate_timeout。 max_children最大子進(jìn)程數,在高并發(fā)請求下,達到php-fpm最大響應數,后續的請求就會(huì )出現502錯誤的??梢酝ㄟ^(guò)netstat命令來(lái)查看當前連接數。
request_terminate_timeout設置單個(gè)請求的超時(shí)終止時(shí)間。還應該注意到php.ini中的max_execution_time參數。當請求終止時(shí),也會(huì )出現502錯誤的。
當積累了大量的php請求,你重啟php-fpm釋放資源,但一兩分鐘不到,502又再次呈現,這是什么原因導致的呢? 這時(shí)還應該考慮到數據庫,查看下數據庫進(jìn)程是否有大量的locked進(jìn)程,數據庫死鎖導致超時(shí),前端終止了繼續請求,但是SQL語(yǔ)句還在等待釋放鎖,這時(shí)就要重啟數據庫服務(wù)了或kill掉死鎖SQL進(jìn)程了。
總而言之,502錯誤主要從四個(gè)方向入手:
max_children
request_terminate_timeout、max_execution_time
數據庫
網(wǎng)關(guān)服務(wù)是否啟動(dòng)如php-fpm
504錯誤一般是與nginx.conf配置有關(guān)了。主要與以下幾個(gè)參數有關(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。特別是前三個(gè)超時(shí)時(shí)間。如果fastcgi緩沖區太小會(huì )導致fastcgi進(jìn)程被掛起從而演變?yōu)?04錯誤。
504錯誤主要查看nginx.conf關(guān)于網(wǎng)關(guān)如fastcgi的配置。
售前咨詢(xún)
售后咨詢(xún)
備案咨詢(xún)
二維碼
TOP