MySQL CPU 过载率超过 100%

MySQL CPU 过载率超过 100%

我的网站今天似乎有超过 100 万次访问,通常约为 20,000 次,而且对我来说它似乎几乎没有响应。我做了一些侦查并优化了 Apache,修复了 PHP 会话的一个错误,但现在我遇到的问题是 MySQL 通常使用 100% 以上的 CPU。

服务器有 32GB RAM,大约有 50% 可用,无交换,3.3Ghz CPU,4 核,4 线程。

我已经关闭了 PHP 中的持久 MySQL 连接。

当我运行 SHOW PROCESSES(); 时,最多只有 8 个,并且没有一个停滞。

我的大部分表都是 MyISAM。InnoDB 表用的不多。

my.cnf的内容:

expire_logs_days        = 10
max_binlog_size         = 100M

innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_log_file_size=1G
innodb_buffer_pool_size=4G

[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[isamchk]
key_buffer              = 16M

!includedir /etc/mysql/conf.d/

有人对要运行的命令有什么建议吗?要更改的设置?这可能会有所帮助。

或者服务器无法处理这么多流量。虽然每天 60 万次访问量还是没问题的。

更新

根据本文:

https://o6asan.com/blog-e/2014/07/03/how-to-see-mysql-server-status-by-phpmyadmin/

我进入 phpMyAdmin 状态面板,开始处理一些以红色突出显示的值。这似乎有点帮助。但是,就我而言,我认为我无能为力,因为服务器每秒处理大约 500 个查询。所以我将考虑打开我的 html 缓存。

启用 100MB 缓存的 MySQL 查询缓存也有很大不同。网站仍然很慢,但每次加载时都会运行,有时很快,有时很慢。

最终的解决方案是缓存整个站点,除了一些需要动态的页面。

相关内容