Я ищу помощь в работе с моим сервером MYSQL. Я использую сервер MYSQL 5.7 на высокопроизводительном процессоре 64 ГБ (на нем больше ничего), и я просто не могу настроить конфигурацию для использования всех доступных ресурсов.
Итак, во-первых, я знаю, что я должен скоро реплицировать сервер и иметь Slave / master Mysql - я сделаю это, как только я полностью использую свой первый сервер. Я также потратил недели на оптимизацию запросов и различное кеширование (сторона apache), чтобы ограничить количество запросов. Теперь мне нужно сделать конфигурацию, чтобы все было хорошо.
Ситуация; У меня огромный объем трафика и огромное количество запросов, и mysql, похоже, больше не может с этим справиться. В настоящее время я выполняю около 700 выборок в секунду (только 20 обновлений и 30 вставок) (мой веб-сайт и apache работают при 3k одновременных подключениях). Моей первой мыслью было MaxClients, я взял до 250; Однако я заметил, что у меня никогда не бывает более 7 одновременных «подключений» (говорит MysqlWorkbench). Я пытался разобраться в том, что говорится в «Отчете об эффективности», но не нашел странных цифр. Вот почему мне нужна твоя помощь.
Это текущие конфигурации, которые я сделал для MYSQL:
max_connections = 250
query_cache_type=1
key_buffer_size=128M
query_cache_size=64M
back_log=100
query_prealloc_size=32K
sort_buffer_size=16M
read_buffer_size=2M
read_rnd_buffer_size=4M
key_cache_age_threshold=3000
key_cache_division_limit=50
memlock=1
max_connect_errors=999999
max_allowed_packet=1M
Я также изменил конфигурацию somaxcon своего Ubuntu. Может ли кто-нибудь помочь мне достичь более высокого лимита для моего сервера MYSQL? Потому что в настоящее время мои процессоры имеют только 10%, а моя оперативная память - 6 ГБ из 64, а MYSQL замедляет работу моего веб-сайта / api (слишком большой трафик). Что такое "идеальный" конфиг (я знаю, что его не существует).
О, и я уверен, что проблема в этом сервере; все работает гладко, если я отключу все подключения MYSQL и буду использовать только свои Mongo / Redis (каждая служба работает на другом сервере).
Пожалуйста, помогите, я рву волосы. Скажите, пожалуйста, нужны ли вам какие-либо экраны из MysqlWorkbench.
Посмотреть здесь https://secure.php.net/manual/en/mysqli.persistconns.php
В отличие от расширения mysql, mysqli не предоставляет отдельной функции для открытия постоянных соединений. Чтобы открыть постоянное соединение, вы должны добавить p: к имени хоста при соединении.
Мне любопытно, что теперь покажут ваши тесты.
Есть несколько вещей, которые нужно сделать, чтобы улучшить производительность вашей БД. Сначала я остановлюсь на нескольких вещах:
Рекомендации для вашего раздела my.cnf-ini [mysqld]
Нажмите #, чтобы отключить, или УДАЛИТЕ следующее, чтобы настройки по умолчанию работали на вас.
. sort_buffer_size. read_buffer_size. read_rnd_buffer_size
дополнительные строки для изменения или добавления в my.cnf-ini
max_connect_errors=10 # from 999999 to make Hackers/Crackers life miserable
. зачем давать им больше 10 шансов угадать пароль?
Это поможет.