应用部署引起上游服务抖动问题分析及优化实践方案
💡
原文中文,约26200字,阅读约需63分钟。
📝
内容提要
JSF-BZ线程池在部署过程中出现线程池初始化线程数量不足导致服务抖动问题,可通过预热操作解决。
🎯
关键要点
- JSF-BZ线程池在部署过程中出现线程池初始化线程数量不足导致服务抖动问题。
- 百川分流系统为交易订单中心提供统一的对外标准服务,流量分发到不同业务线的应用上。
- 现有的两种预热方案均无法达到预期效果。
- JSF官方预热方案需要所有调用方升级到1.7.6版本,配置复杂且预热效果不足。
- 流量录制回放预热方案适合读接口,但对写接口影响较大。
- 通过深入研究JSF源码,开发了一套有效的预热方案,显著降低了服务调用超时问题。
- 系统上线期间,服务调用方反馈接单服务抖动,调用超时现象明显。
- 分析发现,服务调用方接口性能抖动主要在进入服务提供方处理逻辑之前。
- 机器部署过程中CPU短暂飙升影响接口性能,建议在CPU平稳后再上线JSF服务。
- JSF上线瞬间JVM线程数飙升,主要是JSF-BZ线程处于阻塞等待状态。
- JSF-BZ线程池使用SynchronousQueue,初始化线程数量不足导致大量线程创建。
- 建议在应用启动时对JSF线程池进行预热,创建足够数量的线程备用。
- JSF-SEV-WORKER线程也需要进行预热,以提高网络通信性能。
- 通过多种预热操作,显著改善了服务抖动现象,降低了调用超时。
- 提供了一种简单可用的预热工具,整合了多种预热方案。
- 应用部署导致服务抖动是一个共性问题,需要引起重视与关注。
➡️