Mysql 5.6.10配置
Mysql 5.6.10 configuration
数据库服务器
16 cores
63Gb RAM
CentOS release 6.8
etc/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
when we have peaks of 3000 concurrent clients the mysqld does not seem
to pull all the resources posibles from the machine.
我看到负载为 40,但 cpu 似乎没有超过 60%
That reflects in the front end server
**
我的问题很明确,如何在不影响服务器的情况下提高性能?还有如何减少前端服务器的 MYSQL 等待时间,因为显然是数据库服务器端的配置问题。
**
**
UPDATE After research the problem seem to be in the slow queries, so I
guess this configuration is optimal for this hardware
**
不,这不太可能是简单的调整更改。正如我所说,my.cnf
看起来不错 -- 基于有限的信息。
根据图表,突然发生了一些事情。或者一连串的activity.
开启slowlog,设置long_query_time=1,等问题再次出现,再用pt-query-digest告诉你调皮的query
你的max_connections
只设置了700,你是怎么确定你有3000个并发客户端的?站点访问可能不同于并发数据库连接。您可以尝试增加客户可用的连接,因为他们在等待连接时可能会遇到速度变慢的情况。
尝试在高峰使用期间检查 SHOW PROCESSLIST;
以查看您的服务器正在处理的连接数,并在 mysql 错误日志中查找 Too many connections
。
如果您确实增加了 max_connections
限制,请注意您的 CPU 和 RAM。 MySQL 将使用更多内存,并为客户端提供更多连接。
数据库服务器
16 cores
63Gb RAM
CentOS release 6.8
etc/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
when we have peaks of 3000 concurrent clients the mysqld does not seem to pull all the resources posibles from the machine.
我看到负载为 40,但 cpu 似乎没有超过 60%
That reflects in the front end server
** 我的问题很明确,如何在不影响服务器的情况下提高性能?还有如何减少前端服务器的 MYSQL 等待时间,因为显然是数据库服务器端的配置问题。 **
**
UPDATE After research the problem seem to be in the slow queries, so I guess this configuration is optimal for this hardware
**
不,这不太可能是简单的调整更改。正如我所说,my.cnf
看起来不错 -- 基于有限的信息。
根据图表,突然发生了一些事情。或者一连串的activity.
开启slowlog,设置long_query_time=1,等问题再次出现,再用pt-query-digest告诉你调皮的query
你的max_connections
只设置了700,你是怎么确定你有3000个并发客户端的?站点访问可能不同于并发数据库连接。您可以尝试增加客户可用的连接,因为他们在等待连接时可能会遇到速度变慢的情况。
尝试在高峰使用期间检查 SHOW PROCESSLIST;
以查看您的服务器正在处理的连接数,并在 mysql 错误日志中查找 Too many connections
。
如果您确实增加了 max_connections
限制,请注意您的 CPU 和 RAM。 MySQL 将使用更多内存,并为客户端提供更多连接。