当出现Wait future timeout错误时,请确保客户端未出现FullGC并且未在请求期间调用client.shutdown()
方法,以及排查服务端延迟是否过高。
问题现象
使用SDK调用API请求服务端时出现Wait future timeout错误。
可能原因
从发出请求到返回结果的耗时超过了syncClientWaitFutureTimeoutInMillis的值。syncClientWaitFutureTimeoutInMillis的默认值为60000,单位为毫秒。
说明
正常情况下,syncClientWaitFutureTimeoutInMillis的值不建议设置的过小。您可以在ClientConfiguration中设置syncClientWaitFutureTimeoutInMillis的值。
出现此问题的可能原因如下:
客户端出现FullGC或者在请求期间主动调用了
client.shutdown()
方法。服务端延迟过高,大于syncClientWaitFutureTimeoutInMillis的值。
解决方案
确认客户端中是否出现FullGC问题。
通过jmap、jcmd等工具排查JVM,确认JVM的内存占用情况,确认是否出现内存溢出OOM。
如果存在不合理的内存使用或内存泄露问题,请优化代码。
如果内存使用合理但是机器资源不足,请扩容内存。
如果机器空闲且内存占用较少,请调大JVM的堆内存,降低问题发生的概率。
另外,当机器的负载较高、网络异常率高、CPU使用率高时,也会出现Wait future timeout错误,一般是请求可能还未发出就已超时。
文档内容是否对您有帮助?