Skocz do zawartości
gucek012

MySQL server has gone away

Polecane posty

Witam serdecznie.

Mam parę pytań, mam własny skrypt na dodawanie postów, przez jakiś czas wszystko działało sprawnie aż do momentu gdy zaczął mi wyskakiwać ten błąd:

Array ( [0] => HY000 [1] => 2006 [2] => MySQL server has gone away

Z tego co wyczytałem występuje on gdy jest zbyt wiele połączeń do bazy, tak więc.

 

1. Czy taki problem może występować przez to, że po wyjmowaniu danych z bazy nie zamykałem query tzn $baza = null;

2. Jak sprawdzić faktyczną ilośc połączeń z bazą, w linuxie znalazłem tylko to :

http://gyazo.com/b58c113cb637665d2af7975e91828cf7

3. Jak to mogę naprawić.

Bardzo bym prosił o szybką odpowiedź, z góry dziękuję.

Pozdrawiam.

Dawid

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zależy jak realizujesz połączenie.

 

Jeśli dla każdego requesta otwierasz niezależne połączenie, a i tak lecisz synchronicznie to robisz to źle.

 

Wrzuć sobie sleepy w główną część skryptu (jakaś pętla?) I obserwuj z poziomu PHPMA ilość otwartych połączeń.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Generalnie są dwa sposoby na realizowanie dużej ilości zapytań do bazy danych. Albo otwierasz jedno połączenie i synchronicznie go używasz przez cały czas, jednocześnie oszczędzając zasoby, albo dla każdego requesta otwierasz nowe połączenie i zamykasz je od razu po zrealizowaniu żądania, w sposób asynchroniczny.

 

A najlepiej oczywiście jest przepisać SQLki tak żeby było ich jak najmniej i były jak najbardziej skomplikowane. Wiem, że to trudne, i nie zawsze jest możliwe, ale MySQL najlepiej sobie radzi w zarządzaniu swoimi danymi i czasem można prawie zerowym kosztem mocno przyspieszyć swój web service precyzując lepiej to co chcemy w bazie danych osiągnąć w jednym requeście, zamiast wysyłać dwa czy trzy.

 

PHP zamyka wszystkie otwarte (globalne) zasoby dopiero po zakończeniu skryptu, tak więc dobrą praktyką jest otwierać zasoby tak późno jak to jest możliwe, i zamykać je tak wcześnie jak to jest możliwe, nawet jeśli nie mamy zbyt skomplikowanych operacji i czas życia naszego skryptu jest krótki.

Edytowano przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×