怎么在mysql模拟优化实践_mysql配置优化实践

我们游戏采用了mysql作为数据库软件,几经优化,已经相对稳定,有连续几个月稳定运行的记录,不过最近发生了比较诡异的现象,数据库有100多个进程突然锁住,用show processlist命令查看,几分钟之内一直是这些进程在执行相同的sql,没有任何结束的迹象,导致tomcat应用服务器飙升到线程池的最大线程,500个线程,然后停止响应。

show processlist看到的lock现象很多都是memery engine的表或者myisam engine的表,偶尔会有innodb engine的表,这些lock都是死死的lock,没有一点缓解的现象,由于当时情况比较紧急,游戏内玩家都无法操作,因此运维一般都保留show processlist的记录,然后重启db,重启要花费20分钟左右。一般一个小时左右能恢复正常,玩家可以继续游戏。

这样的情况在某个服发生比较频繁,甚至一个礼拜发生一次,非常困扰,老大要求必须解决这个问题,因此用了不少工具去查询mysql的运行情况,包括 mysqlreport,mysql-turner等工具,这些在 <>中有推荐。这两个工具用下来,发现mysql-turner比较傻瓜式,会提供优化的建议,但是内容比较少,而mysqlreport提供了比较详细的mysql运行信息,大约有100行,而且对这些信息做了完善的注释。

在mysql运行正常的情况下,这两个工具看到的mysql状态都是正常的,只是一些小地方引起了我的注意: mysql query cache的配置,我们开启了mysql 的query cache,但是根据这篇文档, mysql query cache,query cache是一把双刃剑,用得不好反而对系统性能有影响,不少文章指出,innodb为主的数据库,不需要开启query cache,因为innodb有自己的buffer pool等机制,而且我们游戏中有大量的insert操作,会导致cache频繁失效。mysqlreport的报告显示,Qcache hit : insert = 0.4 :1 ,可见cache的命中率非常低,详细可见 http://hackmysql.com/mysqlreportguide#qc_report:ratios

后来主程又发了一个mysql query cache的bug过来,http://bugs.mysql.com/bug.php?id=43758 ,开启query cache可能导致thread驻留在'freeing items'状态,而我们采用的mysql版本正好在5.1.36版本之前,因此可能是这个问题导致的。因为每次死锁发生的时候,查看运维的系统负载日志发现,系统的load并不高。也有同事说是因为执行排行等比较耗时的存储过程导致的,我想如果是这个原因的话,最多是部分table被锁住,而且这个innodb的锁可以自行解锁,只是时间问题,从mysql的status看,一直有innodb-lock存在,之前战场的部分table发生锁的现象,也是会自行解锁,或者kill掉一些mysql进程之后可以解锁。

之后将mysql query cache关闭了,现在运行两天下来没有发现大的异常,一个明显改进的现象是,mysql的slow log数量减少了很多,从之前的几千降低到了几十,我们slow-log的最少时间是2s,另外inndodb-lock的平均时间减少到1/2,

Innodb_row_lock_time_avg

13ms

继续观察一下mysql的运行状态,希望能够在其他参数上做出优化,并且杜绝死锁的发生。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-09-03 16:34

浏览 1129

分类:数据库

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值