4 съвета за справяне с max_user_connections
В тази публикация от рубриката “Съвети от support- a” се надяваме да ви отговорим максимално ясно на въпросите: “...already has more than 'max_user_connections' … какво е и защо?” Колегите от техническия екип на нашата хостинг компания споделят в следващите редове четири основни насоки, които ще ви помогнат да оптимизирате работата на сайта си или по-точно определени аспекти при използването на базите данни към него. Приятно четене и разбира се, коментарите са отворени, за да допълните темата с вашите съвети, въпроси и/или ноу-хау! ![]()
Понякога при динамични сайтове, използващи бази данни, е възможно да се появи следното съобщение:
Причината за появата му се дължи на достигнат максимален брой конкурентни MySQL конекции за даден MySQL потребител т.е. максималнияt брой връзки към базата данни са запълнени. Максималният брой конкурентни MySQL връзки, които може да има определен MySQL потребител е настройка на MySQL сървъра. Тази настройка е глобална за сървъра и при услугата споделен хостинг е 30. Посочената стойност е съобразена така, че да се гарантира стабилност на услугата. Тя е напълно достатъчна за нормалната работа на над 99% от приложенията/сайтовете. Има различни случаи, обаче, в които връзките биха могли да се запълнят, като едни от най-често срещаните са следните:
В случай, че източникът, от който се изтегля ресурса, е временно недостъпен и/или има технически проблем, вашият сайт/приложение ще изчаква да получи отговор, докато не изтече стандартния "time out" на връзката. Ако за всеки посетител на вашия сайт се изтегля информация от външен източник, то всяка връзка към базата данни, отворена преди да изтеглите ресурса, ще бъде активна, докато се чака отговора от външния източник. Ако сайта/приложението ви изтеглят външни ресурси в реално време, то най-добре е те да бъдат изключени и да се провери дали отсрещния сървър, от който се изтегля ресурса, е активен.
Добра практика е ресурсите да не се изтеглят в реално време. Удачно е ресурсът да се изтегля и кешира на определен период от време, а в сайта да се показва вече изтеглената и кеширана информация. В такъв случай, дори отсрещният сървър да не отговоря в момента, вие ще показвате кешираното съдържание и това няма да доведе до изчерпване на MySQL връзките или забавяне на сайта.
Посочената грешка може да се появи и когато има заявки към базата данни, които не са оптимални и се изпълняват дълго време. Оптималното време за изпълнение на заявки към базите данни е в милисекунди. Ако обаче са налични заявки, които се изпълняват дълго време, то при конкурентни извиквания/зареждания на приложението/скрипта ще се отварят нови MySQL конекции. При по-бавни заявки това натрупване на MySQL конекции рано или късно ще доведе до появата на грешката.
При разработването на сайтовете обърнете внимание на заявките към базата данни! Неоптималните заявки могат да доведат до допълнително натоварване и забавяне на сайта.
Възможно е php скрипт поради някаква причина да не затваря връзката към базата данни.
Добра практика е след като бъде отворена връзка към базата данни и след приключване на действията със самата база данни (свързване, извличане на данни, добавяне на данни и т.н.), то връзката да бъде затворена. За сайтове на php може да се ползва mysql_close().
Броят конкурентни MySQL връзки за даден MySQL потребител може да бъде достигнат, ако имате повече от едно приложение/сайт и за всички тях използвате един и същ MySQL потребител.
Добра практика е да се използват отделни MySQL потребители за всяка база данни.
Увеличаването на броя връзки не е подходящо решение, ако някоя от описаните по-горе причини е налице, защото в даден момент (понякога в рамките на минути) конекциите ще бъдат отново запълнени... Разбира се има случаи, в които са необходими повече на брой конкурентни връзки към MySQL сървъра. Тогава е удачно преминаването към друг тип хостинг решение, а именно виртуален сървър (VPS), Cloud* или нает сървър.
* Ако искате да тествате как работят приложенията/сайтовете ви на новата ни Cloud услуга, изпратете имейл на колегите от Техническа поддръжка и ще ви предоставим данни за достъп до Cloud акаунт. Услугата има много интересни функционалности, опции за улеснено управление на използваните ресурси и една много важна характеристика – плащате толкова, колкото ползвате!
Съвсем скоро услугата ще бъде достъпна и за поръчка през нашия сайт, като в момента нашите клиенти, заявили желание, вече я тестват. Всички те, а надяваме се и вие,
ни давате полезна обратна връзка, за да можем да ви предложим максимално функционална, атрактивна и лесна за ползване услуга, с което да улесним вашата работа!
За всички новости покрай нас, услугите ни и тенденциите в уеб, можете да се абонирате за нашия блог, посещавате нашите фен страници във Facebook и Google +, както и да ни следвате в Twitter.
Все още няма връзки за обратно следене.



юни 3rd, 2012 - 23:43
Благодаря. Впрочем имате ли наблюдения дали този проблем се появява по-често в joomla или в Drupal?
юни 4th, 2012 - 12:31
Здравейте, Кирил! Не можем да се ангажираме с подобна статистика, тъй като много зависи от самия начин, по който е реализиран сайта, а не толкова от това дали използва Joomla, Drupal или друга CMS система.