如何优化因 MYSQL 读写频繁,负载过高导致的CPU高占用率?

发布于 2022-08-31 20:30:54 字数 552 浏览 48 评论 0

自己做的一个 demo 网站,每天近 22W 左右的访问量,1500 左右独立用户。

现在的问题是数据库有个表读写非常频繁,数据量不大,但是并发数还是很客观的,每日特别是在中午,同时在线人数达到 500 人时,并发读写数据库,导致 MYSQL 进程 CPU 狂飙。

由于自己是前端工程师,对后端不是特别熟悉。对于这种并发读写特别高的情况,如何才能优化程序,降低 CPU 占用率(主要是 mysqld 这块)?

也稍微了解了一些缓存技术 例如 memcache redis 等等。

不知道我的这种情况适合什么样的缓存解决方案,请大家帮我出出主意,谢谢。


晚上11点的cpu占用

24小时cpu占用图表

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

世界和平 2022-09-07 20:30:54

楼上基本上都说了,我这里再补充一点:

1.show processlist 语句,查找负荷最重的 SQL 语句,优化该SQL,比如适当建立某字段的索引;

2.开启慢查询,找到性能瓶颈点的SQL语句,然后使用explain,看看该语句是否可以优化;

3.在多用户,高并发的情况下,任何系统都会hold不住的,所以,使用缓存是必须的,就向楼上说的memcached,或者redis,这些都可以;

4.打开配置文件,看看tmp_table_size大小是否偏小,如果允许,适当的增大一点;

5.如果max_heap_table_size配置的过小,增大一点;

6.怎么你的swap空间为0啊?

最后,你的CPU并不是很高,还可以接受。

但可醉心 2022-09-07 20:30:54

看截图这负载不算高。。。

1、开启 mysql 慢查询,看看有没有可以优化的 SQL;

2、该做缓存的地方做好缓存,新手 memcache 就够用了;

3、想起来补充。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文