Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 33231|Отговор: 6

[Източник] MySQL анализира висока употреба на процесора в ситуации с висока паралелност

[Копирай линк]
Публикувано в 5.09.2017 г. 20:23:59 ч. | | | |


Напоследък, по някои причини, броят на посещенията на уебсайта рязко се увеличи, а от цифрата се вижда, че броят на едновременните връзки надхвърля 1 200

Защото конфигурацията на сървъра е много ниска, 1 ядро и 2G памет, а сайтът е много бавен за достъп, когато има много хора


Използваме горната команда, за да проверим, mysql заема много процесор и памет, а други процеси са php-fpm, които заемат CPU и памет, което не е много

Ако mySQL работи нормално, това означава, че някои SQL оператори в PHP причиняват откриване на проблеми и root потребителят влиза в mySQL управлението
mysql -u root -p
Въведете паролата, след това въведете следната команда




С тази команда можем да видим, че базата данни постоянно изпълнява операции за изтриване с условия, където



pre_k_spider тази таблица е таблица, която записва паякови достъпи, вероятно причинени от инсталиран плъгин

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



Решително изпразни тази таблица и след това отиди в управленския фон, за да затвориш съответните плъгини и да я върнеш към нормалното!









Предишен:Услуга за разпознаване на кодове за верификация на Alibaba Cloud Marketplace
Следващ:mysql 5.6.21 за преглед на конфигурационния файл my.cnf
 Хазяин| Публикувано в 6.09.2017 г. 9:32:56 ч. |


Днес уебсайтът отново е блокиран и се намира голям брой сън

Причини за съня:

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

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

3 Клиентската програма приключи рязко по средата на трансфер на данни

Ако броят на спящите процеси в един и същи период е твърде голям и общият брой връзки в други състояния надвишава стойността max_connection, тогава MySQL вече не може да обработва никакви заявки освен root потребителя, не може да установи връзка с която и да е заявка или се задържа директно

Решение:

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:




Публикувано в 6.09.2017 г. 11:15:15 ч. |
Трябва да си взема сървър с master-slave
 Хазяин| Публикувано в 6.09.2017 г. 11:15:49 ч. |
vrchary публикувано на 2017-9-6 11:15
Трябва да си взема сървър с master-slave

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

След като инсталирах MySQL с портове, след известно време установих, че пространството /var е недостатъчно, проверих и открих, че mysql-bin.000001, mysql-bin.000002 и други файлове заемат място, така че за какво са тези файлове? Това е оперативният лог на базата данни, като например АКТУАЛИЗИРАНЕ на таблица или ИЗТРИВАНЕ на някои данни; дори ако операторът не съвпада с данните, тази команда ще се съхранява в лог файла, включително времето за изпълнение на всяко изявление, което също ще бъде записано.

Това се прави основно за следните две цели:
1: Възстановяване на данни
Ако базата ви данни има проблем и имате резервно копие преди, можете да погледнете лог файла, за да разберете коя команда е причинила проблема с базата данни и да намерите начин да възстановите загубата.
2: Синхронизиране на данни между master-slave сървъри
Всички операции на основния сървър се записват в лог, който подчинения сървър може да използва, за да гарантира, че и двете са синхронизирани.

Просто затвори дневника


 Хазяин| Публикувано в 9.10.2017 г. 14:33:30 ч. |
mysqld е прекалено много CPU и заема Windows по-долу



Решение: Оптимизирайте SQL изявлението
Публикувано в 30.12.2021 г. 23:15:36 ч. |
Подкрепете го!!!!!!!!!!!!!!!!
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com