Mysql 高 CPU 使用甚至优化配置

Mysql High CPU Usage even optimazed conf

我阅读了关于该问题的所有答案,但我还没有找到任何解决方案。

我有一个应用程序,由我的 api 服务器提供。 Wildfly 8.1 和 Mysql 5.6。当查看时间到来时(Wildfly 服务器连接大约 2000-3000)Mysql 使用全部 CPU。我给了 16 个核心 CPU,它使用了所有的核心。

一般我看到 %1500 CPU 用法。我尝试了很多我能找到的方法,但我仍然遇到这个问题。

你能帮我把注意力集中在某个地方吗?

我只从mysql读取数据。不多写。我不太擅长Mysql。我问是因为它。我通过 apt-get 5.6 版安装了 Mysql。这会导致问题吗?

这是我的配置文件。我有 8 GB 内存。 Ty.

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8

myisam-recover         = BACKUP

query_cache_type    = 1
query_cache_limit   = 2M
query_cache_size        = 100M

log_error = /var/log/mysql/error.log

expire_logs_days    = 10
max_binlog_size         = 100M

innodb_file_per_table = 1
innodb_buffer_pool_size = 3G
innodb_log_file_size = 512M
innodb_log_buffer_size = 8M
innodb_buffer_pool_instances = 2

open_files_limit = 30000
table_open_cache = 7500
thread_cache_size = 25

join_buffer_size=2M
read_rnd_buffer_size=1M
max_allowed_packet = 10M

[mysqldump]
quick
quote-names
max_allowed_packet  = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer      = 16M

!includedir /etc/mysql/conf.d/

MySQL 可以配置为写一个慢日志,并且有很好的工具可以总结这个慢日志(即使是很好的旧 maatkit 也有很大帮助,可以直接下载而无需安装)。您可以确定在 MySQL 中花费最多时间的查询,然后通常使用 explain 和一些索引,或者再次考虑您提供给用户的页面,您可以减少 [=15= 的负载].

由于您的问题过于宽泛,可能没有针对您的问题的确切解决方案。

感谢您的回答。我解决了。我不是数据库的设计者。我快速看了一下,看到了一些索引。所以我不认为这是原因。

1 table 有近 100 万行。和索引但错误的索引。所以我索引了真实的列。 CPU 使用量从 16 核减少到 2 核。

所以索引很重要。检查你的索引两次。