简述情景:
1. 最开始出现邮件报警,db进程内存超过5G。
2. 1小时后,db宕机
3. 检查日志,发现mysql语句执行很慢。从18:30开始出现日志警告。
写了个程序测数据库执行速度。连本机数据库执行1000条语句,时间500ms左右。连其他机器数据库执行1000条语句,时间8s左右。服务器的数据库执行线程500ms执行一次,也就是说一旦一次的执行时间超过500ms,而且sql语句持续增加,服务器的执行就开始阻塞,导致内存开始累计。最终服务器由于内存过高,发生宕机。
临时解决方案:
由跨机部署mysql改为在本机部署mysql。db进程访问mysql不跨机器。
至于为什么跨机访问数据库会慢到这种程度,可能由于mysql lib库太久。以后有时间再做针对测试。
原文地址:http://blog.csdn.net/huanzai2/article/details/43566053