附錄:服務(wù)狀態(tài)碼說明
本文為您介紹訪問服務(wù)返回的狀態(tài)碼的說明信息。
狀態(tài)碼 | 說明 |
200 | 服務(wù)正常返回。 |
400 | Processor返回異常。 原因:
|
404 | 找不到服務(wù)。 原因:服務(wù)名稱或服務(wù)請(qǐng)求的Endpoint使用不正確。 |
401 | 服務(wù)鑒權(quán)失敗。 原因:訪問服務(wù)時(shí)未指定Token或指定的Token信息不正確。 處理方法:
|
450 | 超出隊(duì)列長(zhǎng)度丟棄請(qǐng)求。 原因:服務(wù)端的計(jì)算實(shí)例在接收到請(qǐng)求后,會(huì)先將請(qǐng)求放入隊(duì)列中進(jìn)行排隊(duì)。當(dāng)實(shí)例中的worker(worker數(shù)量默認(rèn)為5,您可以在創(chuàng)建服務(wù)的JSON文件中配置metadata.rpc.worker_threads字段來調(diào)整worker數(shù)量)空閑時(shí),會(huì)從隊(duì)列中獲取數(shù)據(jù)進(jìn)行計(jì)算。當(dāng)worker計(jì)算時(shí)間過長(zhǎng),導(dǎo)致隊(duì)列中請(qǐng)求堆積。當(dāng)隊(duì)列打滿時(shí)(隊(duì)列長(zhǎng)度默認(rèn)為64,您可以在創(chuàng)建服務(wù)的JSON文件中配置metadata.rpc.max_queue_size字段來調(diào)整隊(duì)列長(zhǎng)度),新來的請(qǐng)求會(huì)直接被拒絕,并返回狀態(tài)碼450,來避免隊(duì)列過度堆積導(dǎo)致所有請(qǐng)求RT越來越高最終服務(wù)不可用。 說明 隊(duì)列限長(zhǎng)在一定程度上也是一種限流保護(hù),避免大流量導(dǎo)致服務(wù)雪崩。 處理方法:
|
408 | 請(qǐng)求計(jì)算超時(shí)。 原因:服務(wù)端為每個(gè)請(qǐng)求配置了默認(rèn)的超時(shí)時(shí)間(默認(rèn)為5秒,您可以在創(chuàng)建服務(wù)的JSON文件中配置metadata.rpc.keepalive字段來調(diào)整超時(shí)時(shí)間),當(dāng)單個(gè)請(qǐng)求的處理時(shí)長(zhǎng)超過metadata.rpc.keepalive字段配置的值后,服務(wù)端會(huì)返回狀態(tài)碼408,來中斷該請(qǐng)求的處理,并斷開該請(qǐng)求所在的TCP連接。 說明 單個(gè)請(qǐng)求的處理時(shí)長(zhǎng)包含Processor的計(jì)算時(shí)間、請(qǐng)求接收網(wǎng)絡(luò)數(shù)據(jù)包時(shí)間以及單個(gè)請(qǐng)求在隊(duì)列中排隊(duì)的時(shí)間。 |
499 | 客戶端主動(dòng)斷開連接。 原因:當(dāng)客戶端主動(dòng)斷開連接時(shí),客戶端不會(huì)接收到狀態(tài)碼499,該連接上未處理完成的請(qǐng)求會(huì)在服務(wù)端記錄一個(gè)狀態(tài)碼499。例如:在客戶端配置了HTTP超時(shí)時(shí)間為30毫秒,服務(wù)端的處理延時(shí)為50毫秒,客戶端等待30毫秒后未獲取到返回結(jié)果時(shí),會(huì)放棄該請(qǐng)求,并主動(dòng)斷開連接,此時(shí)在服務(wù)端監(jiān)控中,會(huì)出現(xiàn)狀態(tài)碼499。 |
429 | 請(qǐng)求觸發(fā)限流。 原因:EAS提供了基于QPS的限流功能,您可以在創(chuàng)建服務(wù)的JSON文件中配置metadata.rpc.rate_limit字段開啟該功能。開啟限流功能后,如果請(qǐng)求并發(fā)數(shù)超出了指定限制后,超出的部分請(qǐng)求會(huì)被丟棄并返回狀態(tài)碼429。 |
503 | 服務(wù)不可用。 原因:通過網(wǎng)關(guān)訪問服務(wù)時(shí),如果后端服務(wù)實(shí)例狀態(tài)全部為非Ready,則網(wǎng)關(guān)會(huì)返回狀態(tài)碼503。 比較常見的一種場(chǎng)景是,服務(wù)部署完成后狀態(tài)為Running,且服務(wù)各實(shí)例狀態(tài)均為Ready,但發(fā)起請(qǐng)求后,服務(wù)端返回狀態(tài)碼503。通常是因?yàn)楫惓U?qǐng)求觸發(fā)了代碼中的Bug,導(dǎo)致后端服務(wù)實(shí)例Crash,從而無法正常響應(yīng)請(qǐng)求,此時(shí)網(wǎng)關(guān)會(huì)向客戶端返回狀態(tài)碼503。 |