Najpierw podziękowanie dla Wuzetesa za naukę – jak tworzyć chwytliwe tematy ;)
Problem na jaki się natknąłem ostatnio, to zawieszający się co jakiś czas serwer mysql’a. Przyczyną najpewniej jest mało optymalny kod serwisu na tym działającego, co w połączeniu z większym ruchem daje taki oto efekt.
Zacząłem czytanie dokumentacji i testowanie różnych ustawień celem wyeliminowania z mysqld się tej wrednej maniery, jednak w trakcie gdy tak szukam rozwiązania (rozważam nawet przyśpieszony kurs sql’a i podjęcie próby naprawy tego własnoręcznie, co by mi prawdę mówiąc na dobre wyszło), coś trzeba było zrobić z problemem: jak się zawiesi to trzeba go ręcznie restartować.. ale co to za problem dla obywatela kraju wiecznej prowizorki.
Najpierw spróbowałem swoich sił z prostym bashowym skryptem, niestety to rozwiązanie było zbyt wolne (~10 minut, gdy serwer wisi i mysqld zajmuje 99% mocy procesora), a nawet raz kompletnie zawiodło. Zdecydowałem się zatem na napisanie mojego wskrzeszacza (bo tak nazwałem projekt: Mysql.Reviver) w C++.
Po paru godzinach dłubania coś całkiem sensownego udało mi się wydłubać, więc jako zdrowy opensource’owiec postanowiłem się tym podzielić na zasadach GPL’a.
Z tego adresu można pobrać kod: mysql.reviver.cpp
Czekam na komentarze o tym, które rozwiązanie dotyczące zawieszających się mysqld najbardziej Wam się podoba i dlaczego akurat moje ;)
Miłego użytkowania :)
Komentarze