2016-08-04 3 views
4

DBMysql 5.6.10 конфигурации сервера

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 одновременных клиентов действует туздЫ не кажется тянуть все ресурсы от машины.

New relic

Я вижу нагрузку на 40, но процессор, кажется, не преодолеть 60%

Это отражает в переднем сервере

enter image description here

** Мой вопрос ясен, как я могу улучшить производительность без ущерба для сервера? Также можно уменьшить время ожидания MYSQL на внешнем сервере, так как явно проблема с конфигурациями на стороне сервера БД. **

**

UPDATE После исследования проблемы, как представляется, в медленных запросов, так что я думаю, эта конфигурация является оптимальной для данного оборудования

**

+0

Надеемся, что это переместится в раздел «Администрирование базы данных» в стеке – RiggsFolly

+0

Выделенный сервер? Когда происходят резервные копии? Включен ли медленный журнал? Значения в my.cnf выглядят хорошо. –

+0

@ Поверните, что это выделенный сервер, работающий на KVM в Linode Singapore., Резервное копирование выполняется в 5 утра и не мешает производительности, журнал медленного запроса отключается. Я ожидал, что мне будет предложено увеличить ** innodb_buffer_pool_instances ** или ** innodb_thread_concurrency **, чтобы получить больше от машины –

ответ

2

Нет, это вряд ли будет простым изменением настройки. Как я уже сказал, my.cnf выглядит хорошо - на основе ограниченной информации.

Основываясь на диаграммах, что-то произошло внезапно. Или шквал активности.

Включите медленный лог, установите long_query_time = 1, дождитесь, пока проблема не повторится, затем используйте pt-query-digest, чтобы рассказать вам о непослушном запросе.

+0

Мы используем New Relic для оценки медленных запросов, тем не менее мы должны иметь возможность использовать больше возможностей процессора, очевидно, что мы используем только 65% системы, я бы хотел получить ее на 80%, возможно, даже на 90% без ущерба для ОПЕРАЦИОННЫЕ СИСТЕМЫ. –

+0

10 Соединения MySQL не будут использовать более 62,5% из 16 ядер. Любой из них может использоваться только одним ядром. Сколько там было соединений? –

+1

Если у вас когда-либо было 3000 подключений, они будут слишком заняты, спотыкаясь друг над другом, чтобы выполнить любую работу. Серьезно, все показатели снижаются в такой ситуации. 3000 _idle_ в порядке. Но даже 50 _active_ соединений MySQL угрожают вызвать кризис. Есть ли у реликвии больше показателей? То, что вы предоставили, мало чем используется. –

1

Ваш max_connections настроен только на 700. Как вы определили, что у вас 3000 одновременных клиентов? Посещения сайтов могут отличаться от одновременных подключений к базе данных. Вы можете попытаться увеличить количество подключений, доступных вашим клиентам, поскольку они могут испытывать замедление при ожидании подключения.

При попытке проверить, есть ли у вас соединений, которыми вы занимаетесь, ищите Too many connections в своем журнале ошибок mysql.

Если вы увеличиваете свой предел max_connections, следите за своим CPU и оперативной памятью. MySQL будет использовать больше памяти с большим количеством подключений, доступных для клиентов.

+0

Привет, совпадающие клиенты были определены пользователем реального времени Google, я знаю, что это не 100% правильно, но это близкая оценка, с другой стороны, я никогда не вижу, чтобы максимальные соединения были более 300 –

+1

Я предполагаю, что вы имеете в виду 'Max_used_connections', который монотонно увеличивается до перезапуска? Или, может быть, 'Threads_connected', который колеблется? Первый не может превышать «max_connections + 1». Последнее не должно превышать 10-20. –

Смежные вопросы