Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 33231|Ответ: 6

[Источник] MySQL анализирует высокое использование процессора в условиях высокой параллелности

[Скопировать ссылку]
Опубликовано 05.09.2017 20:23:59 | | | |


В последнее время, по каким-то причинам, количество посещений сайта резко выросло, и по данным данным видно, что количество одновременных подключений превышает 1200

Потому что конфигурация сервера очень низкая — 1 ядро и 2G-память, а доступ к сайту очень медленный, когда много людей


Мы используем верхнюю команду для проверки, mySQL занимает много CPU и памяти, а другие процессы — php-fpm, которые занимают CPU и память, что не так много

Если mySQL работает нормально, то некоторые SQL-операторы в PHP вызывают обнаружение проблем, и корневый пользователь переходит в управление mysql
mysql -u корень -p
Введите пароль, затем введите следующую команду




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



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

Мы видим, что pre_k_spider таблице содержит более 100 000 записей, а запрос занимает 33 секунды



Решительно опустошите эту таблицу, а затем перейдите в фон управления, чтобы закрыть соответствующие плагины таблицы и восстановить её в нормальное состояние!









Предыдущий:Сервис распознавания кода верификации Alibaba Cloud Marketplace
Следующий:mysql 5.6.21 для просмотра конфигурационного файла my.cnf
 Хозяин| Опубликовано 06.09.2017 9:32:56 |


Сегодня сайт снова заблокировался, и обнаружено большое количество сна

Причины сна:

1 Клиентская программа не вызывала mysql_close() перед выходом.

2 Клиент спал более wait_timeout или interactive_timeout секунд, не отправляя никаких запросов к серверу.

3 Клиентская программа внезапно завершилась посреди передачи данных

Если количество процессов сна за один период слишком велико, а общее число соединений в других состояниях превышает значение max_connection, MySQL больше не может обрабатывать запросы, кроме корневого пользователя, не может установить соединение с запросом или зависает напрямую

Решение:

1. Во-первых, проверьте, использует ли ваша программа метод pconnect, а во-вторых, проверьте, вызывается ли mysql_close() во времени до выполнения страницы. Старайтесь не использовать метод pconnect, то есть используйте mysql_connect. Когда программа выполняется, mysql_close должен быть явно вызван

2. Добавьте wait_timeout и interactive_timeout в my.cnf, уменьшите значение, по умолчанию wait_timeout — 8 часов, можно изменить на 1 час или полчаса. Таким образом, mySQL быстрее уничтожит мёртвые соединения. Не допустить, чтобы общее количество соединений превысило значение max_connection.

wait_timeout слишком большой размер приведёт к своевременному выпуску большого количества SLEEP процессов в MySQL, что снижает производительность системы, но если настройки слишком малы, могут возникнуть такие проблемы, как «MySQL исчез».

Установите значение max_connection на более высокое, но это явно неуместно — чем больше у вас соединений, тем больше нагрузки это создаёт на сервере. На самом деле, эти связи избыточны, и прекратить их как можно скорее — лучшая политика.

3. Пошагово проанализируйте SQL-запросы системы, найдите слишком медленный SQL и оптимизируйте его



1)interactive_timeout:
Значение параметра: количество секунд, в течение которых сервер ждёт активности перед отключением интерактивного соединения. Интерактивный клиент определяется как клиент, использующий CLIENT_INTERACTIVE опцию в mysql_real_connect().
Параметр по умолчанию: 28800 секунд (8 часов)

(2)wait_timeout:
Значение параметра: количество секунд, в течение которых сервер ждёт активности перед закрытием неинтерактивного соединения.
При начале потока значение сессионного wait_timeout инициализируется на основе глобального wait_timeout или глобального interactive_timeout значения, в зависимости от типа клиента (определяемого CLIENT_INTERACTIVE вариантах соединения mysql_real_connect()).
Параметр по умолчанию: 28800 секунд (8 часов)

Существует верхний предел максимального количества соединений, которые может поддерживать MySQL Server, так как каждое соединение устанавливается и потребляет память, поэтому мы ожидаем, что клиенты будут отключаться и освобождать занятую память после подключения к MySQL Server для выполнения соответствующей операции. Если на вашем MySQL Server много простоящих соединений, они не только будут тратить память, но и если соединения продолжают накапливаться и открываться, то в MySQL Server достигнут максимального количества соединений, что сообщает об ошибке «слишком много соединений». Установка стоимости wait_timeout следует оценивать в зависимости от работы системы. После того как система работает некоторое время, вы можете проверить статус соединения текущей системы с помощью команды показать список процессов; если вы обнаружите большое количество связанных процессов в состоянии сна, это значит, что параметры слишком велики, и вы можете внести соответствующие корректировки для мелких корректировок.


SQL-команда:



Этот метод модификации заключается вПосле перезапуска сервиса mysql он станет недействительным, поэтому лучше всего настроить эти два свойства в конфигурационном файле MySQL.

Измените файл my.cnf в Linux:




Опубликовано 06.09.2017 11:15:15 |
Мне нужно получить сервер с мастер-слэйвом
 Хозяин| Опубликовано 06.09.2017 11:15:49 |
vrchary опубликовано 2017-9-6 11:15
Мне нужно получить сервер с мастер-слэйвом

Причина конфигурации сервера: конфигурация низкая   
 Хозяин| Опубликовано 06.09.2017 13:47:56 |
Решило проблему с тем, что «mysql-bin.000001» занимает много места
http://www.itsvse.com/thread-2694-1-1.html
(Источник: Architect)

После установки MySQL с портами, через некоторое время я обнаружил, что пространства /var недостаточно, проверил и обнаружил, что mysql-bin.000001, mysql-bin.000002 и другие файлы занимают место, так для чего нужны эти файлы? Это журнал операций базы данных, например, ОБНОВИТЬ таблицу или УДАЛИТЬ некоторые данные; даже если оператор не совпадает с данными, эта команда сохраняется в файле журнала, включая время выполнения каждого оператора, который также будет записываться.

Это в основном делается для следующих двух целей:
1: Восстановление данных
Если у вашей базы данных есть проблема, и у вас уже есть резервная копия, вы можете посмотреть файл журнала, чтобы узнать, какая команда вызвала проблему с базой данных, и найти способ восстановить потерю.
2: Синхронизация данных между мастер-слейв-серверами
Все операции на основном сервере записываются в журнал, который ведомый сервер может использовать для обеспечения синхронизации обоих.

Просто закройте журнал


 Хозяин| Опубликовано 09.10.2017 14:33:30 |
mysqld слишком сильно занимает Windows, ниже



Решение: оптимизировать SQL-оператор
Опубликовано 30.12.2021 23:15:36 |
Поддержите!!!!!!!!!!!!!!!!
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com