2015-09-10 85 views
1

我读了所有有关该问题的答案,我还没有找到任何解决方案。Mysql高CPU使用率,甚至optimazed conf

我有一个应用程序,并从我的api服务器喂食。 Wildfly 8.1和Mysql 5.6。当偷看时间到来时(蜻蜓服务器连接约2000-3000)Mysql使用全部CPU。我给了16个核心CPU,并使用它。

通常我会看到%1500的CPU使用率。我尝试了很多方法,我可以找到,但我仍然有这个问题。

你能帮我专注于某个地方吗?

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

这是我的conf。我有8 GB的RAM。 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/ 
+0

索引。得到一些? – Drew

+0

插入/更新/删除或选择哪种类型的查询是常见的? InnoDB的? – M0rtiis

+0

这是什么时候发生的。每次mysql都在做什么?你有什么疑问?请添加更多信息。 – jerik

回答

0

谢谢你的回答。我解决了它。我不是db的设计者。我快速看了一下,我看到了一些索引。所以我不认为是这个原因。

1表有近100万行。索引但错误的索引。所以我索引真正的专栏。 CPU使用率从16核减少到2核。

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

0

MySQL能够被配置为写一个缓慢的日志,并有很好的工具,有总结这种缓慢的日志(甚至好老maatkit有很大帮助,可以只下载了没有安装)。您可以确定最常用于MySQL的查询,然后通常使用explain和某些索引,或者再次考虑您为用户提供的页面,以减少MySQL的负载。

由于您的问题太广泛,因此您的问题可能没有确切的解决方案。