记一次压测优化事件(http配置优化)

事件起因:

楼主今年手上有个项目,上线后,每天大概15w的访问量,单台pod(公司用的docker),TPS在6-7之间,第一次压测的时候,最好的情况是5个pod,TPS达到了36。楼主当时有点绝望,因为跟我们其他的服务上千的qps差距太大了,但是考虑到这个服务的特殊性,所以没有仔细去验证性能这么差的原因在哪儿。

上线1月多,其实没有遇到过该服务出现并发特别大导致服务不可用,所以也还算稳定。

双11前,公司在搞全链路压测,当然也给我这个服务提要求了,希望能达到1k TPS。楼主当时听闻这个消息,人都傻了..粗略算了一下,起码得200台机器啊。

于是为了这个目标,楼主进行了第二次压测,在压测的时候,发现单台服务器的cpu一直稳定在7%,跟第一次完全没有质的变化,于是,没办法,只能让运维这边加机器,直接干到30个pod,再次压测,TPS最高能达到170了。其实对于楼主的业务来说完全够用了,但是耐不住上面的大佬提的要求啊,无奈,在170的压测报告提出后,领导又找上来了,说为什么上不去,瓶颈卡在哪儿?于是楼主开始了漫长的验证之旅:

1.由于压测的时候,cpu一直很稳定在7%,查看了tomcat参数后,以为是tomcat中的启动时线程数(100)搞小了,但是最大线程数也有800,当时不能验证问题所在,所以找了台vm去测试,但是遇到很多问题,环境问题,机器数量问题,最终搁置了。

2.后来我同事大佬(后简称大佬)说应该不是线程数的问题,于是我们找了一天晚上压测,用arthas观察了线程的状态,发现在30个pod时,每次都只有7个线程在工作,其他的线程状态都是waiting,4个runnable,3个timeWaiting,说明根本没有那么多的线程参与工作,排除了1的可能性。于是,我们又查看cpu,还是稳定在7%,在并发100和400的时候,cpu细微波动,但是接口耗时明显上涨,其实这时候就已经觉得很奇怪了。于是楼主当时去看了下cat监控,楼主服务在压测的时候,出现了一个时间段都是2秒多甚至还有3秒多的请求,而这个请求只做了一件事,就是去第三方服务请求数据,于是楼主去看了下第三方的服务接口耗时,他们的接口耗时居然稳定在600-800之间。这就让楼主更加觉得奇怪了,因为对方的服务很稳定,而且看耗时和请求量,压测完全没有对他们的服务造成任何影响。说明在请求他们服务前,就已经耗时很长了,这个时候,就要跟你们介绍一下arthas的trace命令了(建议百度,楼主当时也是百度的),通过arthas命令去分析楼主调用的第三方服务,一层一层查下去,最后发现是获取http的时候hang住了,获取一个连接居然花了2-3秒,所以判断问题就出在这儿。

于是查看代码,这个http连接在哪里被调用的,因为楼主是使用的第三方服务提供的skd包,这个http连接的配置就是使用的默认的,最大连接数配置的是100,问题就在这儿。于是跟第三方沟通后,由他们优化后,重新打包;第二天,重新压测,发现使用新的sdk后,

30个pod在800并发的情况下,能达到930TPS了,900并发的时候,已经压到对方瓶颈,耗时直接翻了3倍。在800并发的时候,CPU最高才40%,所以判断其实在这个并发下,还有优化的空间,跟运维那边沟通后,直接从30个pod减容成10个pod,重新压测,发现在800并发的情况下依然可以做到920TPS,此时CPU最高80%。由此判断:在10个pod数就可以支持将近1kTPS,成功完成了上面大佬的要求。

优化之路路阻且长,但是走的越远越能成长,各位共勉!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于网络系统的优化压测是一个重要的步骤。Netperf 是一个常用的网络性能压测工具,可以帮助评估和优化网络系统的性能。下面是一些使用 Netperf 进行网络系统优化的步骤: 1. 安装和配置 Netperf:首先,确保在目标系统上安装了 Netperf。然后,根据需要进行配置,如指定测试的协议、传输方式、测试参数等。 2. 选择合适的测试场景:根据你的需求,选择适合的测试场景。例如,可以使用 TCP_STREAM 场景测试 TCP 传输的吞吐量,或者使用 TCP_RR 场景测试 TCP 连接的响应时间。 3. 运行测试:使用 Netperf 命令行工具或编写脚本,在目标系统上运行测试。确保在测试过程中录相关指标,如吞吐量、延迟、CPU 使用率等。 4. 分析结果:根据测试结果进行分析。可以比较不同场景下的性能指标,找出潜在的瓶颈和优化空间。例如,如果吞吐量较低,可以检查网络带宽、延迟、丢包等因素,并针对性地进行优化。 5. 进行优化:根据分析结果,针对性地进行网络系统优化。可能的优化方向包括调整网络参数、优化网络拓扑、使用更高性能的硬件等。 6. 再次测试:在完成优化后,再次运行测试,以验证优化效果。持续监测和测试是重要的,可以帮助发现潜在的问题并进行及时调整。 总之,Netperf 是一个强大的工具,可以帮助你评估和优化网络系统的性能。通过合理配置和运行测试,结合分析和优化,可以提升网络系统的吞吐量、稳定性和响应能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值