【发布时间】:2022-01-20 04:24:54
【问题描述】:
我有一个运行在 128GB RAM、500GB HDD 和 10 核处理器上的数据库服务器。
我已经安装了 mysqltuner 并按照建议调整了所有变量,但 MySQL 性能仅提高了几个小时,然后又回到了缓慢的性能。
根据mytop,我有大约 8 个慢查询,我怀疑这可能是造成这种情况的原因。
请注意,此服务器仅运行 MySQL。
我怎样才能最好地进一步改进/优化 MySQL 性能。下面是mysql.conf文件的sn-p。
[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_size = 128M
max_allowed_packet = 400M
thread_stack = 284K
thread_cache_size = 64
innodb_buffer_pool_size = 4G
innodb_log_file_size = 576M
innodb_buffer_pool_instances = 4
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
innodb_doublewrite = 0
innodb_support_xa = 0
innodb_checksums = 0
join_buffer_size=500M
sort_buffer_size=4M
read_buffer_size=4M
read_rnd_buffer_size=4M
table_definition_cache=4096
table_open_cache=4096
tmp_table_size=536870912
optimizer_search_depth=12
innodb_adaptive_hash_index=0
max_heap_table_size=1610612736
expire_logs_days = 10
max_binlog_size = 100M
【问题讨论】:
-
请提供更多信息。在 pastebin.com 上发布并分享链接。从您的 SSH 登录根目录中,文本结果为:A) SELECT COUNT(*) FROM information_schema.tables; B) 显示全球状态;至少 24 小时正常运行时间后 C) 显示全局变量; D) 显示完整的处理程序;和 可选的非常有用的信息,如果可用,包括 - htop 或 top 用于大多数活动应用程序,ulimit -a 用于 Linux/Unix 限制列表,iostat -xm 5 3 用于按设备和核心/cpu 计数的 IOPS,用于服务器工作负载调整分析提供建议。
-
请将您的完整 MySQLTuner.pl 报告(在 24 小时正常运行后生成)和您的 MYTOP 结果以及 HTOP 报告发布到 pastebin.com。
-
从您的配置中删除这 4 行 join_buffer_size=500M sort_buffer_size=4M read_buffer_size=4M read_rnd_buffer_size=4M 将产生惊人的改进,证明简单的调整可能是有益的,并且允许默认值对您有利。
-
@Wilson,你能帮忙解释一下删除它们会有什么帮助吗?这是粘贴pastebin.com/DTWvzjQz的链接
-
您对 512M 的请求要求每个 CONNECTION 为特定限制做好准备。默认值分别为 256K、256K、128K 和 256K,每个 CONNECTION 的总准备量小于 1M。具体在read_rnd_buffer_size的情况下,为什么在256K的时候读4M会提高性能呢?您正在强制系统读取完成任务所需数据的 16 倍。分析中。希望在 48 小时内为您提供建议。
标签: mysql