美文网首页
一次接口性能优化总结

一次接口性能优化总结

作者: wuqingfeng | 来源:发表于2022-06-13 17:02 被阅读0次

    背景

    公司推荐服务接口qps为230左右,与业务需求差距较大,需要对该接口进行优化提升qps。

    测试

    学习压测工具使用,对测试服务器进行压测,测试结果qps为260左右,与测试组同事测试结果差别不大。且在压测的时候发现一部分服务请求不能被响应,返回503服务不可用的错误。

    问题排查

    ● 服务不可用问题排查

    对服务容器资源占用进行查看,容器资源占用曲线如下:


    image.png

    随着资源占用不断增加,在特定时间点出现断崖式下跌,然后继续增加。不断循环往复。结合部分服务请求报503服务不可用错误出现的时间与资源占用下跌时间一致。推测该现象出现原因为随着服务请求增多,容器资源占用增多,达到或超出容器资源申请上限。k8s强制容器重启导致。
    通过限制jvm运行参数限制服务进程占用的系统资源,使之无法达到容器资源限制,可以避免容器被强制重启,保证服务的可持续性。

    对jvm进程占用资源进行限制后,服务并发量也稳定在了260qps左右,容器资源使用情况如下:


    image.png

    从上面的图中可以看出,当jvm进程占用的容器总资源被限制住时,没有再出现重启导致服务不可用的情况。
    ● 服务器性能低问题排查
    进入容器终端,查看jvm进程gc状况,具体如下:


    image.png

    从上图可以看到,jvm进程中eden区与old区几乎被打满,并开始频繁fgc。出现该问题的原因为大量请求来不及处理,请求数据被缓存,导致jvm中eden区与old区被打满,且频繁fgc进一步消耗了cpu资源,导致服务器处理能力进一步下降。解决该问题简单粗暴的办法为增加系统资源,增强服务器请求缓存能力和处理能力。
    通过将服务器资源调整为4c8g,可以将系统资源处理能力提升至2kqps左右。压测结果截图如下:


    image.png

    后续优化

    可以从降低cpu/内存等系统资源占用,提升性能,规范代码书写方式等方面对程序进行进一步优化。

    相关文章

      网友评论

          本文标题:一次接口性能优化总结

          本文链接:https://www.haomeiwen.com/subject/zrpnmrtx.html