4 съвета за справяне с max_user_connections

В тази публикация от рубриката “Съвети от support- a” се надяваме да ви отговорим максимално ясно на въпросите: “…already has more than ‘max_user_connections’ … какво е и защо?” Колегите от техническия екип споделят в следващите редове четири основни насоки, които ще ви помогнат да оптимизирате работата на сайта си или по-точно определени аспекти при използването на базите данни към него. Приятно четене и разбира се, коментарите са отворени, за да допълните темата с вашите съвети, въпроси и/или ноу-хау! 🙂

Понякога при динамични сайтове, използващи бази данни, е възможно да се появи следното съобщение:

mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: User cpanelname_mysqluser already has more than 'max_user_connections' active connections in /home/cpanelname/public_html/file.php

Причината за появата му се дължи на достигнат максимален брой конкурентни MySQL конекции за даден MySQL потребител т.е. максималният брой връзки към базата данни са запълнени. Максималният брой конкурентни MySQL връзки, които може да има определен MySQL потребител е настройка на MySQL сървъра. Тази настройка е глобална за сървъра и при услугата споделен хостинг е 30. Посочената стойност е съобразена така, че да се гарантира стабилност на услугата. Тя е напълно достатъчна за нормалната работа на над 99% от приложенията/сайтовете. Има различни случаи, обаче, в които връзките биха могли да се запълнят, като едни от най-често срещаните са следните:

1. Изтегляне (зареждане) на външни ресурси в реално време

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

В случай че източникът, от който се изтегля ресурсът, е временно недостъпен и/или има технически проблем, вашият сайт/приложение ще изчаква да получи отговор, докато не изтече стандартния „time out“ на връзката. Ако за всеки посетител на вашия сайт се изтегля информация от външен източник, то всяка връзка към базата данни, отворена преди да изтеглите ресурса, ще бъде активна, докато се чака отговора от външния източник. Ако сайта/приложението ви изтеглят външни ресурси в реално време, то най-добре е те да бъдат изключени и да се провери дали отсрещния сървър, от който се изтегля ресурса, е активен.

Съвет от support- a: Добра практика е ресурсите да не се изтеглят в реално време. Удачно е ресурсът да се изтегля и кешира на определен период от време, а в сайта да се показва вече изтеглената и кеширана информация. В такъв случай, дори отсрещният сървър да не отговоря в момента, вие ще показвате кешираното съдържание и това няма да доведе до изчерпване на MySQL връзките или забавяне на сайта.

2. Бавни заявки към базата данни

Посочената грешка може да се появи и когато има заявки към базата данни, които не са оптимални и се изпълняват дълго време. Оптималното време за изпълнение на заявки към базите данни е в милисекунди. Ако обаче са налични заявки, които се изпълняват дълго време, то при конкурентни извиквания/зареждания на приложението/скрипта ще се отварят нови MySQL конекции. При по-бавни заявки това натрупване на MySQL конекции рано или късно ще доведе до появата на грешката.

Съвет от support- a: При разработването на сайтовете обърнете внимание на заявките към базата данни! Неоптималните заявки могат да доведат до допълнително натоварване и забавяне на сайта.

3. PHP скрипт не затваря връзката с базата данни

Възможно е php скрипт поради някаква причина да не затваря връзката към базата данни.

Съвет от support- a: Добра практика е след като бъде отворена връзка към базата данни и след приключване на действията със самата база данни (свързване, извличане на данни, добавяне на данни и т.н.), то връзката да бъде затворена. За сайтове на php може да се ползва mysql_close().

4. Ползване на един и същ MySQL потребител в различните приложения в акаунта

Броят конкурентни MySQL връзки за даден MySQL потребител може да бъде достигнат, ако имате повече от едно приложение/сайт и за всички тях използвате един и същ MySQL потребител.

Съвет от support- a: Добра практика е да се използват отделни MySQL потребители за всяка база данни.

Увеличаването на броя връзки не е подходящо решение, ако някоя от описаните по-горе причини е налице, защото в даден момент (понякога в рамките на минути) конекциите ще бъдат отново запълнени… Разбира се има случаи, в които са необходими повече на брой конкурентни връзки към MySQL сървъра. Тогава е удачно преминаването към друг тип хостинг решение, а именно виртуален сървър (VPS) или нает сървър.

СуперХостинг.БГ
СуперХостинг.БГ
СуперХостинг.БГ е СуперЕкипът! Ежедневно всеки дава най-доброто от себе си, за да можете вие, клиентите на СуперХостинг.БГ, да сте номер едно. СуперСилата на СуперЕкипа е, че винаги е готов да ви даде точната информация, тази от която се нуждаете и за която питате.
0 0 votes
.
Абониране
Уведоми ме при
guest

2 Коментара
Inline Feedbacks
View all comments
Уникално име на фирма

Как да изберете уникално име на фирма?

0
Да измислите уникално име на фирма е предизвикателна задача. Даваме Ви ценни препоръки и идеи за перфектното име за Вашия бизнес. Разгледайте ги в СуперБлога.
Какво е CMS (Content Management System)?

Какво е CMS (система за управление на съдържание)?

0
CMS (система за управление на съдържание) е софтуерен инструмент за лесно и бързо създаване на сайт и след това лесно поддържане на съдържанието в него.
Вече е време да си имате сайт!

Кога разбирате, че Вашият бизнес се нуждае от сайт?

0
Нямате сайт? Но имате бизнес… И все повече усещате, че имате нужда от сайт. Е, тази статия ще Ви помогне да вземете решение. Прочетете повече!