MySQL过载100%的CPU

我的网站今天似乎有超过一百万的访问量,通常大约是两万个,对我来说,似乎几乎没有反应。 我已经做了一些调查并优化了Apache,修正了PHP会话的一个错误,但现在我遇到的问题是MySQL通常使用100%+ CPU。

服务器是32GB的RAM,约50%免费,无交换,3.3Ghz CPU,4核心,4线程。

我已经在PHP中closures了持续的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/ 

有没有人有任何build议的命令来运行? 设置改变? 这可能有帮助。

或者,也许服务器无法处理这么多的stream量。 虽然在每天60万次访问中都很好。

UPDATE

根据这篇文章:

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

我进入了phpMyAdmin状态面板,并开始玩一些突出显示为红色的值。 这似乎有一点帮助。 然而,就我而言,我认为我没有办法做,因为服务器每秒处理大约500个查询。 所以我会考虑打开我的HTMLcaching。

使用100MBcaching启用MySQL查询caching也有很大的不同。 该网站仍然是缓慢的,但它在每个负载,有时很快,有时慢。

最终的解决scheme是caching整个网站,禁止一些需要活力的页面。