常見狀態(tài)碼
簡介
HTTP協(xié)議,即超文本傳輸協(xié)議(Hypertext transfer protocol)。是一種詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)(World ide Web)服務(wù)器之間互相通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議.
HTTP協(xié)議是用于從WWWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少遭垛。
它不僅保證計(jì)算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖
形)等尼桶。
HTTP是一個(gè)應(yīng)用層協(xié)議,由請求和響應(yīng)構(gòu)成,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型.瀏覽器作為HTTP客戶端通過URL向
HTTP服務(wù)端(即WEB服務(wù)器)發(fā)送請求。Web服務(wù)器根據(jù)接收到的請求后,向客戶端發(fā)送響應(yīng)信息锯仪。
HTTP協(xié)議通常承載于TCP協(xié)議之上,有時(shí)也承載于TLS或SSL協(xié)議層之上,這個(gè)時(shí)候,就成了我們常說的HTTPS泵督。
HTTP的特點(diǎn)
1.HTTP是無連接:無連接的含義是限制每次連接只處理一個(gè)請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接庶喜。采用這種方式可以節(jié)省傳輸時(shí)間小腊。
2.HTTP是媒體獨(dú)立的:這意味著,只要客戶端和服務(wù)器知道如何處理的數(shù)據(jù)內(nèi)容,任何類型的數(shù)據(jù)都可以通過HTTP發(fā)送【每撸客戶端以及服務(wù)器指定使用適合的MIME-type內(nèi)容類型秩冈。
3.HTTP是無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議(Stateless Protocol):無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大斥扛。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快入问。
HTTP狀態(tài)碼
HTTP協(xié)議的狀態(tài)碼由3位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類別,共有5中類別:
1.1xx: 指示信息--表示請求已接收,繼續(xù)處理
2.2xx: 成功--表示請求已被成功接收、理解稀颁、接受
3.3xx: 重定向--要完成請求必須進(jìn)行更進(jìn)一步的操作
4.4xx: 客戶端錯(cuò)誤--請求有語法錯(cuò)誤或請求無法實(shí)現(xiàn)
5.5xx: 服務(wù)器端錯(cuò)誤--服務(wù)器在處理請求的過程中發(fā)生了錯(cuò)誤
常見狀態(tài)碼:
200: 請求成功
301: 永久重定向芬失。請求的資源已被永久的移動(dòng)到新URI,返回信息會(huì)包括新的URI,瀏覽器會(huì)自動(dòng)定向到新URI。今后任何新的請求都應(yīng)使用新的URI代替
302: 臨時(shí)重定向匾灶。與301類似棱烂。但資源只是臨時(shí)被移動(dòng)〗着客戶端應(yīng)繼續(xù)使用原有URI
403: 服務(wù)器理解請求客戶端的請求,但是拒絕執(zhí)行此請求.可能是沒有權(quán)限訪問或是人為設(shè)置不允許訪問
404: 需要訪問的文件不存在
499:客戶端主動(dòng)端開
500: 服務(wù)端代碼異常,代碼語法錯(cuò)誤,連接不上數(shù)據(jù)庫等
502: 代理情況下會(huì)出現(xiàn),一般是后端服務(wù)器出現(xiàn)問題,如PHP-FPM掛掉
504: 后端服務(wù)器響應(yīng)超時(shí).如PHP-FPM的執(zhí)行時(shí)間大于超時(shí)時(shí)間就會(huì)出現(xiàn)504
常見狀態(tài)碼499
造成原因:
1.客戶端主動(dòng)端開颊糜,可能是由于客戶端一直在刷新頁面請求;
2.服務(wù)器內(nèi)部相互之間的請求出現(xiàn)異常秃踩。如:(服務(wù)器A---->請求--->服務(wù)器B)
服務(wù)器A的請求超時(shí)時(shí)間設(shè)置為30ms,而服務(wù)器B的響應(yīng)時(shí)間設(shè)置為40ms衬鱼,這樣的話,服務(wù)器A請求服務(wù)器B的時(shí)候憔杨,B在40ms后響應(yīng)馁启,而A在30ms的時(shí)刻就已經(jīng)認(rèn)為超時(shí)了,也有可能會(huì)導(dǎo)致499的錯(cuò)誤
500錯(cuò)誤常見解決方法
1芍秆、500錯(cuò)誤指的是服務(wù)器內(nèi)部錯(cuò)誤,也就是服務(wù)器遇到意外情況,而無法履行請求。
2翠勉、500錯(cuò)誤一般有幾種情況:
(1)web腳本錯(cuò)誤,如php語法錯(cuò)誤,lua語法錯(cuò)誤等妖啥;
(2)訪問量大的時(shí)候,由于系統(tǒng)資源限制,而不能打開過多的文件。
3对碌、一般分析思路:
( 1)查看nginx error log ,查看php error log
(2)如果是too many open files,修改nginx的worker_rlimit_nofile(65535最大值)參數(shù),使用ulimit查看系統(tǒng)打開文件限制,修改/etc/security/limits.conf
vi /etc/security/limits.conf 添加
* soft nofile 65536
* hard nofile 65536
(3)如果是腳本的問題,則需要修復(fù)腳本錯(cuò)誤,并優(yōu)化代碼
(4)各種優(yōu)化都做好,還是出現(xiàn)too many open files,那就要考慮做負(fù)載均衡,把流量分散到不同服務(wù)器上去了
解決502,504錯(cuò)誤
1荆虱、使用nginx代理,而后端服務(wù)器發(fā)生故障;或者php-cgi進(jìn)程數(shù)不夠用;php執(zhí)行時(shí)間長,或者是php-cgi進(jìn)程死掉怀读;已經(jīng)fastCGI使用情況等都會(huì)導(dǎo)致502诉位、504.
2、502 是指請求的php-fpm已經(jīng)執(zhí)行,但是由于某種原因而沒有執(zhí)行完畢,最終導(dǎo)致php-fpm進(jìn)程終止菜枷。
一般來說,與php-fpm.conf的設(shè)置有關(guān),也與php的執(zhí)行程序性能有關(guān),網(wǎng)站的訪問量大,而php-cgi的進(jìn)程數(shù)偏少.針對這種情況的502錯(cuò)誤,只需增加php-cgi的進(jìn)程數(shù).(PHP Tomcat 故障)
具體就是修改/usr/local/php/etc/php-fpm.conf文件,將其中的max_children值適當(dāng)增加.
這個(gè)數(shù)據(jù)要依據(jù)你的VPS或獨(dú)立服務(wù)器的配置進(jìn)行設(shè)置.一般一個(gè)php-cgi進(jìn)程占20M內(nèi)存,你可以自己計(jì)算下,適量增多.
/usr/local/php/sbin/php-fpm restart 然后重啟一下.
3苍糠、504 表示超時(shí),也就是客戶端所發(fā)出的請求沒有到達(dá)網(wǎng)關(guān),請求沒有得到可以執(zhí)行的php-fpm
三、解決503錯(cuò)誤
503 Service Temporarily Unavailable錯(cuò)誤
單個(gè)ip并發(fā)設(shè)置過小會(huì)導(dǎo)致503報(bào)錯(cuò)
如果未使用limit模塊的話啤誊,一般不會(huì)出現(xiàn)503的錯(cuò)誤代碼岳瞭。