`
soartju
  • 浏览: 247497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【原】Qone Mysql性能优化-实战篇

阅读更多

Keywords:Mysql,性能优化,slow query,连接占满,Qone

 

前一段有客户反馈Qone系统的性能问题,并发用户不多,也就是20个左右,但是Qone服务器就down掉了,连登陆页面都无法访问。

 

按理说20多个用户不至于性能差到如此地步,我有幸负责查找这次的性能问题原因,希望可以找到真正的原因。

 

通过查找大量资料,包括tomcat调优、mysql调优、jvm监控等方式,最终发现,最大的性能瓶颈在数据库访问效率上。

 

先看下调优之前的情况:

测试环境为:60用户并发访问Qone,Qone程序最大开启150连接,初始连接80,mysql数据库最大开启240连接,数据库使用Qone的默认数据库,没有进行任何优化。
从下图可以看出,数据库的大部分连接被长时间占用,并且处于sending data状态,从图上看有的连接已经占用了48秒,并且还在继续被占用,迟迟无法释放。


优化前的数据库性能

 

经过一段时间,被占用的连接无法释放,程序申请新的连接,数据库连接数很快上升到117个。


最终由于所有连接都无法释放,数据库性能急剧下降,Qone程序配置的150个连接都被占满(图中157个连接,有7个为通过非Qone方式访问数据库的连接),Qone程序已经无法通过浏览器访问,首页无法打开,数据库已经基本无法访问。


下面是loadrunner的截图,从结果看,执行基本全部失败,成功的只有62次,平均响应时间tasklist15.287s(由于后期都是失败,这个数据只统计成功的平均值,需要综合看),taskreport100.216s。



 未优化前性能情况

 

对于程序快速占满数据库连接的情况,是很严重的异常,通过分析和大量实验,最终确定是由于单个连接占用时间过长导致数据库性能急剧下降。

 

调优后的情况:

基于以上结果,从降低单个连接的占用时间入手。Qone的数据库访问,在程序上修改起来比较麻烦,因此我们只关注slow query,通过对数据库增加索引的方式来提升slow query的效率。如何开启mysql的slowq query log自己搜索一下吧。

如何优化slow query的文章很多,这里主要是使用mysql自带的explain对sql语句进行分析,然后通过在相应字段上增加索引以提升查询性能。

 

下面通过检测Mysql数据库的slow query,仅在loadrunner测试用例执行的sql语句涉及的表上进行优化,在bsemployee表的userlogin_id列上加了normal索引,在taskDayReport表的userId,taskId,submitDate均增加normal索引。
调优之后,同样的数据量,60的并发用户访问Qone程序,数据库连接,qone程序连接设置与调优前一样,通过浏览器访问Qone程序,可以打开各页面,响应速度基本可以接受,后台连接占用时间较短,且很多连接还处于sleep未占用状态。


 调优之后的连接占用情况

从截图可用看出,大部分连接执行时间基本都在0s,部分连接执行2s,大部分连接还处于sleep可用状态,数据库连接池中的初始连接还未被占满。
从loadrunner执行结果看,60的用户全部登陆成功,所有请求全部成功执行,失败请求为0。Tasklist平均响应时间24.265s,taskreport平均响应时间10.156。


 

从测试结果看,这次调优基本上已经可以达到目的,用户后来也反馈没有再出现此性能问题,但Qone性能调优还有很多事情要做,如程序中数据库操作的sql或hql语句优化,数据库结构及索引优化等。

 

总结:从测试情况看,降低每一个数据库连接的占用时间是关键。否则就算并发量很小,但连接被占用时间很长,也会使数据库性能急剧下降。

  • 大小: 309.4 KB
  • 大小: 160.6 KB
  • 大小: 172.9 KB
  • 大小: 195.4 KB
  • 大小: 313.9 KB
  • 大小: 208.2 KB
1
0
分享到:
评论

相关推荐

    qone5介绍资料共享

    Qone5是一款专为IT行业设计的高级软件工具,它集成了多种功能,旨在提升软件开发效率,优化软件过程管理,确保项目质量和稳定性。这款产品在行业中得到了广泛应用,因其强大的特性而备受赞誉。下面将详细探讨Qone5的...

    QOne全能数据库一体机解决方案.pptx

    该解决方案集成了软件、x86服务器、存储、IB网络、虚拟机和备份资源,通过预先集成、优化和测试,确保安全可靠。 在构建企业级Oracle数据库生产系统时,企业需要考虑基础架构、数据备份和运维管理。传统的基础架构...

    QOne全能数据库一体机解决方案.pdf

    该一体机整合了软件、x86服务器、存储、高速IB网络、虚拟化技术和备份功能,形成了一套预先集成、优化和测试过的完整系统,确保了安全可靠的运行。 在构建企业级Oracle数据库生产系统时,QOne考虑了以下几个关键...

    PB8.0中文参考手册

    PowerBuilder 8 全面改进了应用程序开发环境它提供了耳目一新的用户界面增强了 Web 功能数据窗口与EAServer 更加紧密的集成功能提供了新的数据库连接和访问能 力进一步提高了易用性新增的PowerScript 新特性让开发...

    华为软件测试工作流程.ppt

    - **考勤管理**:在项目开始前,员工需自行录入Qone考勤系统。进入项目后,则需要记录每天的工作内容,并在下周填写华为考勤(Timesheet)。项目经理会在月末汇总考勤,确保其准确性。 - **工作计划**:建议养成每周...

Global site tag (gtag.js) - Google Analytics