16 核 12 GB RAM 专用 MySql 配置

16 核 12 GB RAM 专用 MySql 配置

我有一台专用的 16 核 12 GB RAM Mysql 服务器,由于我将其配置为 16 GB 服务器,因此性能非常差,我想这可以解释为什么该网站现在需要 500 多秒才能呈现单个页面。我使用 memcached 来缓存查询并使用 InnoDB 作为数据库引擎。

#8 core/16GB config stolen from http://groups.drupal.org/node/28830

back_log                        = 50
max_connect_errors              = 9999999
table_cache                     = 5000
binlog_cache_size               = 1M
max_heap_table_size             = 128M
sort_buffer_size                = 500K
join_buffer_size                = 500K
thread_cache_size               = 100
thread_concurrency              = 16
query_cache_size                = 512M
query_cache_limit               = 8M
query_cache_min_res_unit        = 2K
thread_stack                    = 192K
tmp_table_size                  = 384M
long_query_time                 = 2

# *** INNODB Specific options ***

innodb_additional_mem_pool_size = 80M
innodb_buffer_pool_size         = 12G
innodb_file_io_threads          = 4
innodb_thread_concurrency       = 16
innodb_log_buffer_size          = 20M
innodb_log_file_size            = 800M
innodb_log_files_in_group       = 3
innodb_max_dirty_pages_pct      = 90
innodb_lock_wait_timeout        = 120
innodb_file_per_table           = 1

如能提供任何有关优化 my.cnf 配置,甚至提出新配置的帮助,我将不胜感激。

答案1

只有在 12GB 机器上配置 16GB 内存时才会出现问题,即 MySQL 试图使用比系统更多的内存资源。大多数 MySQL 服务器都配置为使用过多内存,但这并不会导致它们从第一天开始运行不佳。如果机器没有交换且 MySQL 没有被 OOM 杀死,那么问题并不在于它是 12GB 机器上配置 16GB 内存的机器。

如果问题出在 MySQL 方面,您可以先使用 检查进程列表SHOW PROCESSLIST;。如果耗时 500 秒,您肯定会看到一些挂起的查询。如果正在执行的查询被截断,您可以运行SHOW FULL PROCESSLIST;

我还建议打开慢查询日志。一旦您发现任何问题查询,您可以使用解释语句来查看您的查询是否正在使用您拥有的索引。

如果将问题隔离到数据库,仍然有很多变量。第一步是找出哪些查询运行缓慢,然后从那里开始。您可能会发现,改进查询将比任何服务器端配置更改带来最大的改进。

相关内容