问题描述
调用HSF服务超时,报错信息类似如下:
[HSF-Provider] 执行HSF服务[com.taobao.uac.client.dynamic.service.SellerDynamicService:1.0.0]的方法[queryPromotionBySellerIds~Ll]耗时[$Time]ms,接近超时时间
说明:[$Time]表示服务端方法执行的总时间。
系统显示类似如下。
问题原因
服务端处理耗时大于3秒,耗时较长的原因如下:
- 服务端出现序列化错误。
- 存在Full GC问题。
- 调用的其他程序长时间无响应。
解决方案
当超时时间减去实际耗时时间小于100ms时,服务端将打印此报错日志,默认超时时间为3s。
- 如果超时时间很短,例如小于100ms,每次调用都会打印此日志,请忽略此日志。
- 如果超时时间已经很长,打印此日志,则说明业务执行慢,需要执行以下操作,排查和分析业务执行的性能瓶颈。
- 在服务端的
/home/admin/logs/hsf/hsf.log
日志文件中,查找业务执行超时的日志,定位具体的类及方法:
- 服务端出现序列化错误,请检查业务代码、流类型、File、超大的对象等都会导致序列化错误,请不要传递这些数据。
- 代码性能较低,请进行代码优化。
- 服务端如果做了GC机制,系统会出现暂停或者抖动,请检查GC日志,查看是否在问题出现时有Full GC的情况发生,如果经常发生,则需要关注应用的内存消耗,检查一下不合理的数据使用情况。
-
使用
jstack
命令检查线程是否存在长时间无响应的情况。如存在,请根据现场实际情况进行相应的处理。
- 在服务端的
适用于
- 企业级分布式应用服务EDAS