性能调优之网络瓶颈

之前我们在项目中引入了数据库连接池之后,在一定程度上,提升了性能.但是,上次我们只是用20个并发量做的测试,而这显然太小了.所以,这次我们使用了2000个并发量来进行测试.

上次我们把数据库连接池的尺寸,设置成了20.在并发量为20时,没有什么问题.然而,一旦到了2000的并发量,我们从Hibernate的Statistic中就能看到,其中有大量的操作,都卡在了从数据库连接池请求数据库连接这里.

然后,我们调大一点数据库连接池的尺寸,将它改为200,然后将MySQL的接受的最大连接数量改为300.这次,性能稍微提升了一些.

我们可以看到,最后的测试,延迟直接到了30+s.

我们从Hibernate的Statistic中看到,这个延迟,主要是由execute JDBC Statement造成的.

这就很奇怪.起初以为Hibernate的Statistic中的execute JDBC Statement的时间是MySQL执行相应的语句的时间,以为是高并发导致服务器负载过大,导致MySQL执行过慢.于是,监控一下服务器的状态,并打开MySQL的慢查询日志功能,将慢查询的阈值设置为1s,然后在执行一次测试,发现服务器负载并不大,也没有执行的过慢的操作.

这也证明了Hibernate的Statistic中的execute JDBC Statement的时间,并不是MySQL中执行语句的时间.

既然不是MySQL的问题,那么问题应该出在Hibernate和MySQL连接的过程中.于是,我们猜测是网络带宽的问题.怀疑是网络拥塞的问题,登录上腾讯云,查看网络连接的情况:

从这里,我们能够看到,出带宽确实达到了达到了我的服务器的带宽,1Mb.

早就想到过,带宽迟早会是我们的服务的瓶颈,只是没有想到,这就遇到了.

这个问题,只能通过增加带宽来解决了.

Hibernate的Statistic中的execute JDBC Statement的计算,应该是在连接中执行Statement之前,记录一下时间,然后执行完成后,收到MySQL发送过来的成功的消息之后,在记录一下时间,然后取这个时间的差值.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,835评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,764评论 18 399
  • Hibernate: 一个持久化框架 一个ORM框架 加载:根据特定的OID,把一个对象从数据库加载到内存中OID...
    JHMichael阅读 1,995评论 0 27
  • 生命之轮 感恩张慧老师,感恩感召我上六期的伙伴们,听完张慧老师讲了第一节课发现,我在五期的时候是没有画生命之轮的,...
    媛媛_db7a阅读 143评论 0 2
  • 今天一个高中同学打来电话,说他要结婚了。先介绍一下我这位朋友大熊,在高中时就有一些交情,算还不错的朋友,毕后就很难...
    煎定的洋葱阅读 339评论 0 3