mysql server has gone away jak się uporać

0

Witam, posiadam serwer VPS z phpmyadmin.
Na serwerze uruchomiona jest strona, która posiada czat wszystkie wiadomości, które są wysyłane zapisuje sobie do bazy MySQL, ale kiedy osób zaczyna być więcej otrzymuje piękny error, który brzmi "mysql server has gone".

Probowałem to rozwiązać tak:

SET GLOBAL max_allowed_packet=1073741824;

I tak:

SET @@GLOBAL.wait_timeout=300;

ale te rozwiązanie nie pomogło - jaka może być przyczyna i jak to rozwiązać ?

Warto dodać, że problem zaczyna się gdy jest na stronie więcej osób.

0

Celowałbym w sprawdzenie tego ile jest otwartych połączeń z bazą. A co do chatu, wiem ze to moze nie najszybsze i nie najprostsze rozwiązanie - ale może coś na socketach? https://www.codementor.io/meteor/tutorial/getting-started-with-meteor-build-sample-app

0

Podłączyłem się do serwera wpisałem komendę

SHOW STATUS;

I moje oczy ujrzały:

Connections: 14896 (i rośnie)

Jak to możliwe, że nawiązanych zostało tyle połączeń ?
Faktycznie przeskok na Sockety pod czat to dobra racjonalne rozwiązanie, ale kiedy projekt jest w sieci i użytkownicy korzystają nie chciałbym "zawieszać" projektu, a praca na wersji developerskiej w trakcie gdy trzeba ratować to co się szybko sypie jest dość trudna.

0

Skąd taka liczba? Uzytkownicy podpinaja sie do bazy, ale polaczenie jest podtrzymywane/otwarte. Dlatego jest bardzo duza szansa ze z tych 15k polaczen spora czesc powinna isc do piachu. Pokombinuj moze z czasem po jakim baza ma rozlaczac usera

0

pewnie ma jakieś zapytania, które wykonują się baardzo długo i to zapycha bazę.

0

15k to całkiem sporo, masz aż tak duża stronę? A w kodzie zamykasz połączenia po dodaniu wiadomości do archiwum? Nie widzimy kodu więc ciężko tak zgadywać bo błąd może być po stronie skryptów a nie w bazie :P

0

kod pokaż, Panie.

jak już wybrałeś złe narzędzia do swojego projektu i nie zamierzasz ich zmienić to spróbujemy tak je powyginać, żeby coś z tego jednak było

1 użytkowników online, w tym zalogowanych: 0, gości: 1