首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有1500个活动连接的100% CPU的MySQL

具有1500个活动连接的100% CPU的MySQL
EN

Database Administration用户
提问于 2017-07-28 01:16:19
回答 3查看 6.7K关注 0票数 1

我和MySQL有个问题。我有一个运行一些cron作业的系统,这些任务创建了大量的数据库连接。当它达到大约1500个活动连接时,cpu使用率达到100%,但是内存保持良好。我的服务器配置是:

代码语言:javascript
复制
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

文件my.cnf:

代码语言:javascript
复制
[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
EN

回答 3

Database Administration用户

发布于 2017-07-28 23:48:14

您可能遇到了Von Neumann瓶颈。

随着连接数量的增加,CPU使用率预计会增加。随着连接的增加,活动查询的数量也应该增加。每个查询将使用一些CPU。最终,您将有足够的查询来使用所有可用的CPU。

随着并发运行查询的数量增加,在使用更多CPU的同时,还有一些额外的因素:

  • 等待资源锁的时间。这可能涉及锁自旋,这将消耗额外的CPU。
  • 当O/S切换当前正在运行的查询时,上下文切换。这是多个处理的副作用,它允许您一次运行多个查询。

运行像sar这样的程序可能会提供更多关于CPU使用位置的详细信息。

票数 1
EN

Database Administration用户

发布于 2017-09-26 20:11:56

使用您的

代码语言:javascript
复制
innodb_buffer_pool_size = 35G

你应该考虑使用

代码语言:javascript
复制
innodb_buffer_pool_instances = 8

以提高并发性和减少争用。

票数 0
EN

Database Administration用户

发布于 2017-10-02 14:41:25

对于~1500个活动连接,请考虑将my.cnf更改为:

代码语言:javascript
复制
thread_cache_size = 100   # v8 suggested CAP to minimize thread create/destroy.

关于更详细的分析,请在原文中添加以下内容:

代码语言:javascript
复制
SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES;
SHOW ENGINE INNODB STATUS;

最多可有五项具体建议,最多每天一次,监控。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/182040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档