我和MySQL有个问题。我有一个运行一些cron作业的系统,这些任务创建了大量的数据库连接。当它达到大约1500个活动连接时,cpu使用率达到100%,但是内存保持良好。我的服务器配置是:
CentOS release 6.6 (Final)
Model Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz
Cores 16
Speed 1278.984 MHz
Cache 20480 KB
Memory 130GB[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_connect_errors=100
open-files=64
interactive_timeout=60
wait_timeout=10
max_connections=2000
max_allowed_packet=5M
tmp_table_size=100M
max_heap_table_size=100M
#query cache desativado
query_cache_type = 0
query_cache_limit = 50M
sort_buffer_size= 1M
read_buffer_size= 128K
read_rnd_buffer_size=1M
#join_buffer_size=208M
join_buffer_size=8M
key_buffer_size=20M
myisam_sort_buffer_size=10M
thread_cache_size = 30
key_buffer=100M
open_files_limit=64
default-storage-engine=MyISAM
innodb_file_per_table=1
innodb_buffer_pool_size=35G
innodb_additional_mem_pool_size=80M
query_cache_size=50M
back_log=75
expire_logs_days = 1
max_binlog_size = 30M
tmpdir = /var/mysqltmpdir
long_query_time=1
log_slow_queries=/var/log/mysql_slow_queries.log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
bind-address = *
port = 3306发布于 2017-07-28 23:48:14
您可能遇到了Von Neumann瓶颈。
随着连接数量的增加,CPU使用率预计会增加。随着连接的增加,活动查询的数量也应该增加。每个查询将使用一些CPU。最终,您将有足够的查询来使用所有可用的CPU。
随着并发运行查询的数量增加,在使用更多CPU的同时,还有一些额外的因素:
运行像sar这样的程序可能会提供更多关于CPU使用位置的详细信息。
发布于 2017-09-26 20:11:56
使用您的
innodb_buffer_pool_size = 35G你应该考虑使用
innodb_buffer_pool_instances = 8以提高并发性和减少争用。
发布于 2017-10-02 14:41:25
对于~1500个活动连接,请考虑将my.cnf更改为:
thread_cache_size = 100 # v8 suggested CAP to minimize thread create/destroy.关于更详细的分析,请在原文中添加以下内容:
SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES;
SHOW ENGINE INNODB STATUS;最多可有五项具体建议,最多每天一次,监控。
https://dba.stackexchange.com/questions/182040
复制相似问题