首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中的CPU利用率有时会非常高。

MySQL中的CPU利用率有时会非常高。
EN

Stack Overflow用户
提问于 2018-09-01 14:04:30
回答 1查看 90关注 0票数 0

如何优化MySQL的CPU利用率有时会变得非常高?

这是我的my.ini文件

代码语言:javascript
复制
slow-query-log=1
long_query_time=10
server-id=1
max_connections=2000
table_open_cache=2000
tmp_table_size=391M
thread_cache_size=10
key_buffer_size=512M
read_buffer_size=64K
read_rnd_buffer_size=256K
innodb_additional_mem_pool_size=32M
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=256M
innodb_buffer_pool_size=10G
innodb_log_file_size=512M
innodb_thread_concurrency=25
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=256M
max_connect_errors=100
open_files_limit=4161
query_cache_type=1
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000
query_cache_size = 2084M

请在这方面提出任何需要的更改,以降低高cpu使用率?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-05 00:42:34

要考虑的my.ini mysqld部分的建议(RPS =每秒速率)

以超级用户身份登录后,您可以使用以下命令验证适用于您的MySQL版本的这些动态全局变量函数:

设置全局variable_name=variable_value;(注意128K为128*1024,391M为391*1024*1024 -K&M不允许动态更改)

在每天改变你的my.ini之前。如果您的请求因“read_only”消息而被拒绝,请跳过该消息并让我知道。

代码语言:javascript
复制
# 20180904 1137  from  mysqlservertuning.com
# read_rnd_buffer_size=128K  # from 256K to reduce handler_read_rnd_next RPS
# innodb_io_capacity=1000  # from 200 to allow additional HD RD and WD RPS
# read_buffer_size=128K  # from 64K to reduce handler_read_next RPS
# max_connections=1000  # from 2000 because max_used_connections in 2 days was 244
# thread_cache_size=100  # from 10 to conserve CPU and reduce threads_created of 339 in 2 days
# max_heap_table_size=391M # from 16M to be = tmp_table_size and reduce created_tmp_disk_tables count
# innodb_lru_scan_depth=100  # from 1024 to reduce CPU busy every second see refman
# key_buffer_size=64M  # from 512M because only 11% used today
# innodb_change_buffer_max_size=15  # from 25 percent because less than 1% used 
# innodb_flushing_avg_loops=10  # from 30 to reduce flushing loop delay

每天,使用带有日期的计时文件名将您当前的历史记录保存在\ my.ini中,例如20180904-1137-my.ini,以便快速返回到上一次工作的my.ini。

第一次,将此块(包括前导日期和我们的网站名称)复制到mysqld部分的末尾,并通过删除前导#和spacecharacter,监视器来启用每天一次的更改,然后再进行下一次更改。

禁用前面带有前导#和空格键的同名变量,以避免混淆。在5年内,您仍将拥有my.ini更改的历史记录和大致日期。

通常每天只有一次更改,在移动到下一次更改之前进行监控。如果更改似乎是有害的,请返回到最后的工作my.ini,并让我们知道,请。

期待您在实施后发布评论+7天到mysqlservertuning.com,选择商店,选择您购买的项目-即使它是免费的,请向下滚动到评论并添加您的评论。不需要帐户登录即可发布评论。

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

https://stackoverflow.com/questions/52125354

复制
相关文章

相似问题

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