场景
.线上服务偶尔报 504 Gateway timeout
,一般在量大的时候出现。
原因
线上服务运行在 k8s 集群中,集群使用了 Istio ,Istio 的 Envoy 代理等待目标服务返回的超时时间默认值为 15 秒,这里使用的 Istio 版本为 Istio-v1.1.5,其他版本自行测试。
解决方法
在 Istio 的虚拟服务中添加超时设置,调整为 30 秒,如下:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v2
timeout: 30s