本文為您介紹訪問服務返回的狀態代碼的說明資訊。
狀態代碼 | 說明 |
200 | 服務正常返回。 |
400 | Processor返回異常。 原因:
|
404 | 找不到服務。 原因:服務名稱或服務要求的Endpoint使用不正確。 |
401 | 服務鑒權失敗。 原因:訪問服務時未指定Token或指定的Token資訊不正確。 處理方法:
|
450 | 超出隊列長度丟棄請求。 原因:服務端的計算執行個體在接收到請求後,會先將請求放入隊列中進行排隊。當執行個體中的worker(worker數量預設為5,您可以在建立服務的JSON檔案中配置metadata.rpc.worker_threads欄位來調整worker數量)空閑時,會從隊列中擷取資料進行計算。當worker計算時間過長,導致隊列中請求堆積。當隊列打滿時(隊列長度預設為64,您可以在建立服務的JSON檔案中配置metadata.rpc.max_queue_size欄位來調整隊列長度),新來的請求會直接被拒絕,並返回狀態代碼450,來避免隊列過度堆積導致所有請求RT越來越高最終服務不可用。 說明 隊列限長在一定程度上也是一種限流保護,避免大流量導致服務雪崩。 處理方法:
|
408 | 請求計算逾時。 原因:服務端為每個請求配置了預設的逾時時間(預設為5秒,您可以在建立服務的JSON檔案中配置metadata.rpc.keepalive欄位來調整逾時時間),當單個請求的處理時間長度超過metadata.rpc.keepalive欄位配置的值後,服務端會返回狀態代碼408,來中斷該請求的處理,並斷開該請求所在的TCP串連。 說明 單個請求的處理時間長度包含Processor的計算時間、請求接收網路資料包時間以及單個請求在隊列中排隊的時間。 |
499 | 用戶端主動中斷連線。 原因:當用戶端主動中斷連線時,用戶端不會接收到狀態代碼499,該串連上未處理完成的請求會在服務端記錄一個狀態代碼499。例如:在用戶端配置了HTTP逾時時間為30毫秒,服務端的處理延時為50毫秒,用戶端等待30毫秒後未擷取到返回結果時,會放棄該請求,並主動中斷連線,此時在服務端監控中,會出現狀態代碼499。 |
429 | 請求觸發限流。 原因:EAS提供了基於QPS的限流功能,您可以在建立服務的JSON檔案中配置metadata.rpc.rate_limit欄位開啟該功能。開啟限流功能後,如果請求並發數超出了指定限制後,超出的部分請求會被丟棄並返回狀態代碼429。 |
503 | 服務不可用。 原因:通過網關訪問服務時,如果後端服務執行個體狀態全部為非Ready,則網關會返回狀態代碼503。 比較常見的一種情境是,服務部署完成後狀態為Running,且服務各執行個體狀態均為Ready,但發起請求後,服務端返回狀態代碼503。通常是因為異常請求觸發了代碼中的Bug,導致後端服務執行個體Crash,從而無法正常響應請求,此時網關會向用戶端返回狀態代碼503。 |