Mysql 5.6.10配置

时间:2016-08-04 11:13:57

标签: mysql centos database-performance my.cnf

数据库服务器

16 cores 
63Gb RAM 
CentOS release 6.8

等/ my.cnf中

[mysqld]
pid_file=/var/lib/mysql/fatty01.pid

datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock
user=mysql

innodb_buffer_pool_size = 50G
innodb_log_file_size = 2G
innodb_flush_log_at_trx_commit = 0
sync_binlog = 0
innodb_flush_method = O_DIRECT
innodb_buffer_pool_instances = 16
innodb_thread_concurrency = 16
skip_name_resolve = 1 
innodb_io_capacity = 4000
innodb_io_capacity_max = 6000
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_load_at_startup = 1
query_cache_size = 0
query_cache_type = OFF
innodb_checksum_algorithm = crc32
table_open_cache_instances = 16
innodb_read_io_threads = 20
innodb_write_io_threads = 10
max_connections = 700
  

当我们有3000个并发客户端的峰值时,mysqld似乎没有   从机器中提取所有可用的资源。

New relic

我看到负载为40但cpu似乎没有超过60%

  

这反映在前端服务器

enter image description here

** 我的问题很明确,如何在不影响服务器的情况下提高性能?另外,如何减少前端服务器中的MYSQL等待时间,因为数据库服务器端的配置显然存在问题。 **

**

  

更新研究后问题似乎是在慢查询中,所以我   猜测这种配置对于这种硬件是最佳的

**

2 个答案:

答案 0 :(得分:2)

不,它不太可能是一个简单的调整改变。正如我所说,my.cnf看起来很好 - 基于有限的信息。

根据图表,突然发生了一些事情。或者一连串的活动。

打开slowlog,设置long_query_time = 1,等到问题再次发生,然后使用pt-query-digest告诉你顽皮的查询。

答案 1 :(得分:1)

您的max_connections仅设置为700.您是如何确定您拥有3000个并发客户端的?站点访问可以与并发数据库连接不同。您可以尝试增加客户端可用的连接,因为他们在等待连接时可能会遇到速度减慢。

尝试在高峰使用期间检查SHOW PROCESSLIST;以查看服务器处理的连接数,并在mysql错误日志中查找Too many connections

如果确实增加了max_connections限制,请注意CPU和RAM。 MySQL将使用更多内存,并为客户提供更多连接。