Skocz do zawartości

[MySQL] Brak połączenia z bazą


Ghost

Recommended Posts

Narzędzia:

glassfish

mysql

java

Problem:

Śmiga sobie serverek glassfish'a, kiedy przychodzi noc nikt nie łączy się z bazą, a rano server wywala Exception:

org.eclipse.persistence.exceptions.DatabaseException

Internal Exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Zagadka najbardziej chyba do Artura, no i może Micz coś wyłapie. Exception wywala tylko raz, potem już sobie samo odświeży połączenie i wszystko śmiga. Jest to problem, ponieważ czasami pierwszą rzeczą jaką robi baza danych, to wyciąga login i hasło, no i się przy tym wywala. Muszę znaleźć miejsce, gdzie mogę sobie tak skonfigurować bazę MySQL, żeby po 8 godzinach bezczynności nie zawieszała połączenia. Ktoś wie jak to zrobić ??

I jeszcze pytanie, czy jak zmienię bazę na przykład na postgresa, to czy będę miał z nim podobny problem?

Odnośnik do komentarza
Udostępnij na stronach

Jeśli baza rozłącza połączenie to pewnie musisz coś ustawić w samym mysql'u choć ja się z czymś takim nie spotkałem.

Co do postgresa, trudno powiedzieć, pamiętaj, że różne silniki baz danych różnią się niektórymi poleceniami SQLa więc musiałbyś sprawdzić poprawność.

Odnośnik do komentarza
Udostępnij na stronach

@Micz: z różnymi silnikami nie powinno być problemu, z tego względu, że korzystam z Java Persistence API, wystarczy więc zmienić tylko sterownik. 90% zapytań robi się z automatu, te co trzeba wpisywać z palca są uznawane przez ogólny standard SQL.

@Ralliart: wyjątek wywala Glassfish nie sam MySQL, ale wywala go dlatego, że MySQL "usypia" połączenie. Wiem, że po 8 godzinach, bo wyczytałem to w google, natomiast nigdzie nie znalazłem rozwiązania tego problemu. Po wykonaniu pierwszego zapytania (które się wywala), kolejne zapytania już przechodzą, bo MySQL odnawia sobie połączenie. Server MySQL jest zainstalowany w pakiecie z innymi pierdółkami, cały silnik to XAMPP. Warto jeszcze dodać, że korzystam z czegoś takiego jak KM Wakeup, który o określonej godzinie hibernuje server, a rano go budzi, może w tym jest jakiś problem, bo ostatnio zauważyłem, że nie działa do końca poprawnie. Dzisiaj go wyłączę i zobaczymy jak się serverek zachowa jutro.

Odnośnik do komentarza
Udostępnij na stronach

To hibernowanie serwera jest bez sensu moim zdaniem, bo nie ma żadnego zysku z tego, że nie działa w nocy. Bo jak rozumiem serwer działa w trybie 24/7? No i nie możesz wymagać tego, by serwer MySQL trzymał połączenia też w trybie 24/7, bo to jest niewykonalne. W pewnym momencie zabrakłoby po prostu wolnych połączeń do bazy.

Odnośnik do komentarza
Udostępnij na stronach

To hibernowanie serwera jest bez sensu moim zdaniem, bo nie ma żadnego zysku z tego, że nie działa w nocy. Bo jak rozumiem serwer działa w trybie 24/7? No i nie możesz wymagać tego, by serwer MySQL trzymał połączenia też w trybie 24/7, bo to jest niewykonalne. W pewnym momencie zabrakłoby po prostu wolnych połączeń do bazy.

Hibernowanie serwera ma zaoszczędzić prąd i wydatki z tym związane (odp. dla greenpeace: ma uratować ziemię i wszystkie istoty na niej żyjące poprzez zapobieganie efektowi cieplarnianemu). Chociaż pewnie nie dużo zaoszczędza, ale zawsze. Serwer działa 24/7, z tym, że jest zahibernowany w godzinach 16:30 - 7:30 oraz w weekendy. Nie za bardzo rozumiem co znaczy, że zabrakłoby wolnych połączeń do bazy. W kodzie źródłowym zamykam każde otwarte połączenie z bazą zwalniając miejsce dla innych połączeń. Kiedyś tego nie zaimplementowałem i mi się aplikacja srała co 3 dni ;)

Jako tymczasowe rozwiązanie możesz zrobić po prostu try catcha, gdy wystąpi wyjątek to w catch ponawiasz zapytanie do bazy. Tylko pytanie czy zdąży ponowić połączenie, ale zawsze możesz dodać opóźnienie.

W sumie jest to jakieś rozwiązanie. Chodzi o przerobienie 2 aplikacji, z których pierwsza to Intranet, który zaraz po uruchomieniu pobiera sobie z bazy aktualne News'y, no i drugi HR, który pobiera login i hasło, więc wystarczy zmodyfikować tylko te 2 połączenia. No ale zrobię to jutro :) Najpierw zobaczymy czy będzie działał jak nie zahibernuję servera ;) Tylko tych wielorybów szkoda, ale to jest cena, jaką jestem gotów zapłacić :)
Odnośnik do komentarza
Udostępnij na stronach

Gość
Ten temat jest zamknięty i nie można dodawać odpowiedzi.
×
×
  • Dodaj nową pozycję...