Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 33231|Відповідь: 6

[Джерело] MySQL аналізує високе завантаження процесора в ситуаціях високої паралелності

[Копіювати посилання]
Опубліковано 05.09.2017 20:23:59 | | | |


Останнім часом, з певних причин, кількість відвідувань сайту різко зросла, і з цієї цифри видно, що кількість одночасних підключень перевищує 1200

Оскільки конфігурація сервера дуже низька, пам'ять на 1 ядро і 2G, а доступ до сайту дуже повільний, коли там багато людей


Ми використовуємо верхню команду для перевірки, mySQL займає багато процесора та пам'яті, а інші процеси — php-fpm, які займають CPU та пам'ять, що не дуже багато

Якщо mySQL працює нормально, це означає, що деякі SQL-оператори в PHP викликають виявлення проблем, і кореневий користувач заходить у mysql management
mysql -u корінь -p
Введіть пароль, потім введіть наступну команду




За допомогою цієї команди ми бачимо, що база даних постійно виконує операції видалення з умовами де



pre_k_spider цій таблиці є таблиця, яка фіксує доступи павуків, ймовірно, спричинені встановленим плагіном

Ми бачимо, що pre_k_spider таблиці містить понад 100 000 записів, і запит триває 33 секунди



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









Попередній:Сервіс розпізнавання кодів верифікації Cloud Marketplace Alibaba Cloud Marketplace
Наступний:mysql 5.6.21 для перегляду файлу конфігурації my.cnf
 Орендодавець| Опубліковано 06.09.2017 09: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 слід оцінювати відповідно до роботи системи. Після того, як система працює певний час, ви можете перевірити статус підключення поточної системи за допомогою команди show processlist; якщо ви знайдете велику кількість підключених процесів у режимі сну, це означає, що параметри занадто великі, і ви можете внести відповідні коригування, щоб зробити менші коригування.


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 та інші файли займають місце, то для чого потрібні ці файли? Це журнал операцій бази даних, наприклад, UPDATE таблиці або DELETE деякі дані, навіть якщо оператор не збігається з даними, ця команда зберігається у файлі журналу, включаючи час виконання кожного оператора, який також буде записаний.

Це здебільшого робиться з такими двома цілями:
1: Відновлення даних
Якщо у вашій базі даних є проблема і у вас вже була резервна копія, ви можете переглянути файл журналу, щоб з'ясувати, яка команда спричинила проблему з базою даних, і знайти спосіб відновити втрату.
2: Синхронізація даних між серверами master-slave
Усі операції на первинному сервері записуються в журнал, який підлеглий сервер може використовувати для забезпечення синхронізації обох.

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


 Орендодавець| Опубліковано 09.10.2017 14:33:30 |
mysqld занадто сильно займає Windows нижче



Рішення: оптимізація SQL-оператора
Опубліковано 30.12.2021 23:15:36 |
Підтримайте це!!!!!!!!!!!!!!!!
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com