公司站一直在使用西部数码的虚拟机,前段时间在“资源分享”里面分享了一个自己写的《PHP泛目录》插件,大约一共生成了220万条长尾关键词,单表258MB大小,然后前端MYSQL正则(REGEXP)匹配的全站不同栏目下信息。

最终虚拟机撑不住了,mysql占用CPU达到了100%, 被强制暂停,之后恢复,最终强制暂停。

没办法,以现有的PHP技术,性能优化也就可以说到顶了(MYSQL正则(REGEXP)想着取舍,优化MYSQL字段,后续操作重点)

结果:升级了云主机(Linux-WDCP,配置:西部数码弹性云入门型,CPU2核,1G,60GB,2MB),数据安装恢复之后,查看性能还是依旧CPU占用较高,LINUX远程登录“TOP”命令查看,mysql还是依旧占CPU过高(大概75%以上)

办法:增加(临时表大小tmp_table_size)的大小,默认的是18MB左右,我这里修改到了400M。WDCP后台的资源使用率降到了“1”以下(之前在5左右,高的时候到20-30)【方法参阅了:http://www.jb51.net/article/30495.htm 】

写在最后:PHP与MYSQL等语句的性能优化,还是在继续深入学习中,后续会持续跟进代码优化以及MYSQL优化(是否为字段建立索引等),如果哪位大牛对优化有好的建议可以回复下面呦,或者修改了临时表大小有什么问题还烦您纠正

最终效果截图(修改之后时间过短,通过WDCP的系统负载和西部后台的性能视图,感觉效果还是明显的)

linux云主机MYSQL占用CPU过高解决办法-冯金伟博客园

一天之后CPU性能图,真的感觉压力减少了近一倍:

linux云主机MYSQL占用CPU过高解决办法-冯金伟博客园