php 网页中有大量 mysql 查询,导致 mysql 占用 cpu 非常高,如何解决?

2016-05-12 20:52:21 +08:00
 sbmzhcn
由于系统使用的人比较多,导致某些时刻 mysql 占用 cpu 非常高,想解决下这个问题。

目前想到一个办法 ,使用缓存, memcache,如何? 网上没有找到具体的实施方法。
听说 redis 也可以,这个东西不会,能否详细说下。
3901 次点击
所在节点    MySQL
23 条回复
yylzcom
2016-05-12 20:56:35 +08:00
网上有很多 redis 和 memcache 的教程啊
freehao123 去看看,另外建议增强自己看英语文章的能力,官方文档直接上手难,但是英语博文很多那种非常详细的博客,很好上手
Sunyanzi
2016-05-12 20:57:57 +08:00
此时此刻我最想给出的建议是 ... 别费那个劲了把 CPU 升级到现在的八倍吧 ...

如果还是不行就再升级 ... 双路 E5 不行上四路 E5 ... 再不行还有八路 E7 ...

能用自己的钱解决的问题为什么要别人施舍给你方案 ...
kofj
2016-05-12 20:58:04 +08:00
1.各个服务独立服务器;
2.检查 MySQL 是否有慢查询,有的话改进查询语句 ;
3.PHP OPcache ;
4.对热数据进行缓存。
kofj
2016-05-12 20:58:55 +08:00
@Sunyanzi 有这么一句话来着:能用钱解决的都不是问题。哈哈哈。
des
2016-05-12 21:01:25 +08:00
优化下 mysql 语句,关键地方加索引
另外缓存是个万金油,哪里不爽抹哪里,不过用好也不是个简单的事

redis 很简单啊,简单的说就是个键值对,看下文档会用了
k9982874
2016-05-12 21:02:45 +08:00
先优化 php 代码,再优化 mysql ,读写分离做了立竿见影,最后上 memcached 。一般到这里就完事了,还不行就业务逻辑改分布式, mysql 集群化堆硬件吧
lslqtz
2016-05-12 21:55:10 +08:00
静态缓存即可 memcache 和 opcache 都没有 html 来的一颗赛艇
dangyuluo
2016-05-12 21:59:01 +08:00
真的是经典的 MySQL 优化问题
murmur
2016-05-12 22:03:32 +08:00
如果是企业开发基本没戏 不过 php 没有多少企业开发吧 检查下是不是索引加错或者忘了
yangqi
2016-05-12 22:03:55 +08:00
使用的人比较多是多少?几百几千几万?

目测是 mysql 表结构和查询优化的问题
realpg
2016-05-12 22:04:20 +08:00
你需要一个 DBA ,或者架构师帮你好好优化一下设计……
shiny
2016-05-12 22:06:02 +08:00
先 explain ,记录 sql slow log 。不行再 profiling 然后解决瓶颈部分的问题
Mac
2016-05-12 23:36:14 +08:00
我自己公司用 I3 跑的程序, 20 个人同时用好无问题。
cxbig
2016-05-13 00:30:33 +08:00
通常在技术能力不行的情况下,加服务器是最优解。
zhouxuchen
2016-05-13 02:08:38 +08:00
用 redis 吧,永久化存储用 MySQL ,平时数据走 redis 。定时脚本更新 redis 数据或者用触发式地更新 redis
cheng007
2016-05-13 09:10:18 +08:00
1. 优化 mysql ,建索引。
2. 增加机器性能
3. 优化程序

先把前两步做了吧, 3 有能力的话可以做,不然你可能搞出更多的问题。
Zeffee
2016-05-13 09:19:55 +08:00
肯花钱就直接换高配机子。
否则就优化下,检查下慢查询,做下 sql 语句优化索引优化,加缓存等等
sbmzhcn
2016-05-13 10:53:42 +08:00
感谢大家的回复,技术方面解决需要些时间,看来花钱换一个服务器比较快。
这是公司的一个小系统,用的人不是很多,几十个人访问,有一个页面 sql 联合查询比较多,可能写的也有问题。
mysql 建索引好像没啥用。
violinn
2016-05-13 14:02:23 +08:00
hoythan
2016-05-13 14:14:13 +08:00
相比较于 memcache ,你应该去关注下 memcached 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278280

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX