Automatyczny restart Apache
Feb 19
Wiele razy zdarzało mi się, że mój serwer padł całkowicie lub przerywał żądania. Wówczas był niedostępny, a zarobki generowane z serwisów diametralnie spadały. Co więcej… użytkownicy poczuli niestabilność maszyny. Dziś po odpowiedniej optymalizacji kodów aplikacji pady są rzadkością, ale wolę się ubezpieczyć przed niespodziewanym downem serwera.
Problem można rozwiązać w prosty sposób: cyklicznie uruchamiany program bash‘a przez crona będzie odpowiadał za poprawne działanie usługi apache. Listing, który zaprezentuję łączy się z adresem url odwołującym się do naszego serwera za pomocą wget, a następnie wynik działania (response body) zapisze do pliku tymczasowego. Jeżeli plik istnieje oraz ma rozmiar niezerowy, oznacza to, że serwer działa poprawnie. Jeżeli plik nie istnieje, bądź jego wielkość jest równa zero z, oznacza to, że trzeba zrestartować usługę apache, bo nie odpowiada. Zaraz przed zakończeniem programu, plik tymczasowy powinien zostać usunięty. Pozwoliłem sobie opublikować mały program służący do automatycznego restartu usługi apache.
Aby nasz program poprawnie działał, trzeba zastanowić się nad trzema istotnymi rzeczami:
- Ile prób połączenia ma wykonać
wgetoraz jakie mogę być timeouty. - Czy adres url, do którego się odwołujemy będzie zawsze dostępny w przypadku poprawnego działania usługi apache.
- Jaki powinien być interwał uruchamiania napisanego programu.
Na moim serwerze program uruchamia się co minutę, próbuje połączyć się ze stroną dwa razy, a maksymalny czas oczekiwania na odpowiedź przy każdej z prób wynosi 10 sekund.
Program zapisany jest pod /root/check_apache.sh, a regułka uruchamiania w cronie wygląda następująco:
* * * * * bash /root/check_apache.sh
Przedstawiony problem można rozwiązać na wiele sposobów, przedstawiłem ten najbardziej oczywisty.
Read More
Po przenosinach
I stałem się szczęśliwym posiadaczem serwera dedykowanego. Podczas przenoszenia dość dużego serwisu fotkowego LookMe.pl oczywiście wystąpiły komplikacje. Ale to już nie po naszej stronie – bo do przerzutu takiego kolosa opracowaliśmy bardzo dokładną strategię.