性能分析之公有云网络带宽导致 TPS 低 RT 高

举报
zuozewei 发表于 2021/09/11 10:58:15 2021/09/11
【摘要】 背景介绍 分析过程 背景介绍今天在压力过程中,一兄弟说压力上不去了,TPS 随着用户数的增加居然没有一点上升的趋势,响应时间倒是乐呵呵的上去了。结果如下(大概的数据,当时我只是随手记在了本子上,主要看趋势):两个同事为了这个瓶颈在哪里找了大半天时间,因为之前我说过,系统瓶颈的分析要找到具体的原因才能跟其他团队沟通,不然别人问起来为什么回答不上来,显得团队能力不够强似的。后来他们实在没招了,...

背景介绍

今天在压力过程中,一兄弟说压力上不去了,TPS 随着用户数的增加居然没有一点上升的趋势,响应时间倒是乐呵呵的上去了。结果如下(大概的数据,当时我只是随手记在了本子上,主要看趋势):

在这里插入图片描述

两个同事为了这个瓶颈在哪里找了大半天时间,因为之前我说过,系统瓶颈的分析要找到具体的原因才能跟其他团队沟通,不然别人问起来为什么回答不上来,显得团队能力不够强似的。
后来他们实在没招了,过来问我。描述大概如下:

  • 他们查了数据库的资源,觉得没什么问题,SQL 执行时间还是挺快的,每秒近 2 万的 sql。

  • 查了被测主机的情况,只有 us CPU 用的高,50%左右;

在这里插入图片描述

  • 查了应用的进程的状态,也打了 java thread dump 来看,看到有大量的 connection 等待。如下图所示:

在这里插入图片描述

在这里插入图片描述

上面是全是 object.wait 状态的,还有一些 running 的是这样的:

- locked <0x000000066885da80> (a java.io.BufferedInputStream)

分析过程

看到这些数据,我想既然数据库有这么多连接都在等待,那就查查数据库的连接和 session 的状态。

在这里插入图片描述

居然只有几个 threads running,多刷了几遍,最多的也是只有10个左右。然后又回到应用里去查看应用主机和数据库主机之间的 TCP 连接

netstat -naop|grep 4001|wc -l

314

多刷了几次,也是说有 300 多是建立连接的,当然有些已经是 keepalive 状态了。但是 ESTABLISHED 的状态也是很多的连接。
看来这个 JDBC 有点多呀。但是这边多,数据库里在忙的却没那么多。如果
到这里为止,和连接有关的东西,还有一个没有查,就是网络状态。于是 iftop 一下。

在这里插入图片描述

网络流量 200 M左右应该算是比较正常。
但是为什么几个线程梯度都是这么多网络流量?如果是JDBC太多导致系统切换过多而 TPS 上不去,那为什么中断不多呢?或者是带宽就这样多?
带宽就这么多吗?有这个意识之后,我就让人把压力停了,先测一下网络带宽。然后就 iperf 了一下,结果带宽只有 300 多M。嗯?怎么只有 300 多M?又被公有云给公有了吗?
于是就把数据中心的人叫过来问了一下,他们说这个共享的带宽,可能 300M 已经不算小了。
为了验证这一点,做了如下测试:

在这里插入图片描述

看来公有云的网络吞吐量确实只能这样了。

后续还是到准生产上玩吧。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。