问题描述

调用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,每次调用都会打印此日志,请忽略此日志。
  • 如果超时时间已经很长,打印此日志,则说明业务执行慢,需要执行以下操作,排查和分析业务执行的性能瓶颈。
    1. 在服务端的/home/admin/logs/hsf/hsf.log日志文件中,查找业务执行超时的日志,定位具体的类及方法:
      • 服务端出现序列化错误,请检查业务代码、流类型、File、超大的对象等都会导致序列化错误,请不要传递这些数据。
      • 代码性能较低,请进行代码优化。
    2. 服务端如果做了GC机制,系统会出现暂停或者抖动,请检查GC日志,查看是否在问题出现时有Full GC的情况发生,如果经常发生,则需要关注应用的内存消耗,检查一下不合理的数据使用情况。
    3. 使用jstack命令检查线程是否存在长时间无响应的情况。如存在,请根据现场实际情况进行相应的处理。

适用于

  • 企业级分布式应用服务EDAS