V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
sbmzhcn
V2EX  ›  MySQL

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

  •  
  •   sbmzhcn · 2016-05-12 20:52:21 +08:00 · 3877 次点击
    这是一个创建于 2877 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于系统使用的人比较多,导致某些时刻 mysql 占用 cpu 非常高,想解决下这个问题。

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

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

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

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

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

    先把前两步做了吧, 3 有能力的话可以做,不然你可能搞出更多的问题。
    Zeffee
        17
    Zeffee  
       2016-05-13 09:19:55 +08:00 via Android
    肯花钱就直接换高配机子。
    否则就优化下,检查下慢查询,做下 sql 语句优化索引优化,加缓存等等
    sbmzhcn
        18
    sbmzhcn  
    OP
       2016-05-13 10:53:42 +08:00
    感谢大家的回复,技术方面解决需要些时间,看来花钱换一个服务器比较快。
    这是公司的一个小系统,用的人不是很多,几十个人访问,有一个页面 sql 联合查询比较多,可能写的也有问题。
    mysql 建索引好像没啥用。
    violinn
        19
    violinn  
       2016-05-13 14:02:23 +08:00
    hoythan
        20
    hoythan  
       2016-05-13 14:14:13 +08:00
    相比较于 memcache ,你应该去关注下 memcached 。
    pine
        21
    pine  
       2016-05-13 16:31:35 +08:00
    数据库方面 语句索引优化,如果是搜索多的话还阿里云开放搜索,本地缓存 memcache 缓存,生成静态。
    darasion
        22
    darasion  
       2016-05-17 20:52:19 +08:00
    CPU 占用高一些,说明计算资源被充分利用了。呵呵。
    yylzcom
        23
    yylzcom  
       2016-05-19 17:12:16 +08:00
    @darasion Nice ,如果我是互联网公司的管理者,一定把上面所有人都开除了只留下你去和投资方谈融资
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1237 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:58 · PVG 01:58 · LAX 10:58 · JFK 13:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.