图22 服务拉入后请求量和响应时间
9.换宿主机
当宿主机负载过高时,可以考虑更换宿主机,避免宿主机负载过高影响容器负载。
1)分析
- CPU Throttled 指标
看下应用 CPU 节流指标,CPU 节流会导致 CPU 休眠引起服务停顿。如果 CPU 利用率正常还是出现了 CPU 节流,这种大多数都是宿主机问题导致。
图23 CPU节流情况
- 宿主机指标
排查宿主机 CPU 利用率、CPU Load、磁盘、IO 等指标是否正常,如下图 CPU Load在某个时刻后大于1说明宿主机负载较大。
图24 宿主机CPU Load监控
2)解决方案
重启机器换宿主机。
10.优化网络
排查不稳定的网络线路,保证网络的稳定性。
1)分析
网络的重点看下 TCPLostRetransmit(丢失的重传包)指标。比如下图,某个点指标异常,而这个点其他指标都正常,那可以初步怀疑是网络问题导致,最终确认需要找网络相关团队确认。
图25 TCPLostRetransmit指标
2)解决方案
找网络相关团队排查优化。
四、总结
回顾全文,主要讲解遇到超时问题怎么分析、怎么定位、怎么优化,从简单到复杂总结了 10 种常见的优化方法。这些方法不一定能解决其他不同业务场景的超时问题,具体需要结合自己的实际业务场景来验证。
本文总结的方法都是我们在生产中遇到的真实情况,通过不断实践总结出来的,希望这些内容能够给阅读本文的同学带来一定的收获。
优化注意事项:
- 超时时间设置和 GC 调优需要结合自己业务场景来优化。
- NIO 异步编程改造成本、复杂度较高,我们也在探索更简单的方式,例如 JDK19 引入的虚拟线程(类似 Go 协程),可以用同步编程方式来实现异步的效果。
作者丨Wen
来源丨公众号:携程技术(ID:ctriptech)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
最新活动丨XCOPS智能运维管理人年会