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
分享到:
相关推荐
Qone5是一款专为IT行业设计的高级软件工具,它集成了多种功能,旨在提升软件开发效率,优化软件过程管理,确保项目质量和稳定性。这款产品在行业中得到了广泛应用,因其强大的特性而备受赞誉。下面将详细探讨Qone5的...
该解决方案集成了软件、x86服务器、存储、IB网络、虚拟机和备份资源,通过预先集成、优化和测试,确保安全可靠。 在构建企业级Oracle数据库生产系统时,企业需要考虑基础架构、数据备份和运维管理。传统的基础架构...
该一体机整合了软件、x86服务器、存储、高速IB网络、虚拟化技术和备份功能,形成了一套预先集成、优化和测试过的完整系统,确保了安全可靠的运行。 在构建企业级Oracle数据库生产系统时,QOne考虑了以下几个关键...
PowerBuilder 8 全面改进了应用程序开发环境它提供了耳目一新的用户界面增强了 Web 功能数据窗口与EAServer 更加紧密的集成功能提供了新的数据库连接和访问能 力进一步提高了易用性新增的PowerScript 新特性让开发...
- **考勤管理**:在项目开始前,员工需自行录入Qone考勤系统。进入项目后,则需要记录每天的工作内容,并在下周填写华为考勤(Timesheet)。项目经理会在月末汇总考勤,确保其准确性。 - **工作计划**:建议养成每周...