Ograniczenia są najlepszym nauczycielem, a przynajmniej tak było w moim przypadku 🎓
Wiesz, że pracowałem kiedyś na VPS-ach mających 32MB RAM-u?
Tak, tam jest MB, nie GB.
Czego mnie to nauczyło? 🧵 ↓
Ograniczenia są najlepszym nauczycielem, a przynajmniej tak było w moim przypadku 🎓
Wiesz, że pracowałem kiedyś na VPS-ach mających 32MB RAM-u?
Tak, tam jest MB, nie GB.
Czego mnie to nauczyło? 🧵 ↓
Ograniczenia są najlepszym nauczycielem, a przynajmniej tak było w moim przypadku 🎓
Wiesz, że pracowałem kiedyś na VPS-ach mających 32MB RAM-u?
Tak, tam jest MB, nie GB.
Czego mnie to nauczyło? 🧵 ↓
Chcesz postawić typowego LAMP-a na serwerze?
apt install apache2 php mysql
Przyduś ENTER i na każde pytanie odpowiedz ENTER.
W większości przypadków, do prywatnych zastosowań (np. prosty blog) to wystarczy.
Gratulacje! Jesteś adminem 😃
Lata temu zainteresowałem się społecznością "LowEndBox", gdzie można było kupić tanie serwery VPS. Minusem było to, że serwery były nie tylko bardzo tanie, ale i skrajnie słabe.
Do tego firmy je oferujące dość szybko bankrutowały.
Ale ja nie o tym!
Kupiłem serwer mający 32MB RAM i Debiana 6 na pokładzie.
Po zalogowaniu okazuje się, że BASH zajmuje 3MB, a klient SSH 1MB. No pięknie, czyli mam realnie 28MB do wykorzystania 🤦♂️
Chciałem tam postawić bloga na Wordpressie — tak dla wprawy.
I tutaj zaczynają się schody. Po standardowej instalacji nic nie działa. MySQL nie wstaje. Apache zostaje zabity przez OOMKillera, a próba uruchomienia debuga kończy się wyrzuceniem mnie z SSH, bo nie ma wolnej pamięci.
Co robić i jak żyć?
Zacząłem UCZYĆ SIĘ, jak to wszystko działa.
Dlaczego pusta baza MySQL zjadała 128MB? → bo alokuje poola pod InnoDB
A co to jest InnoDB? → silnik do składowania danych
Potrzebuję go? → niekoniecznie
Mogę wyłączyć? → tak
Jak → szukam tutoriala
Dlaczego po wyłączeniu wspomnianego silnika nadal zjada ~10MB? Bo alokuje sporo różnych przestrzeni na cache, bufory itp.
Wszystko to musiałem doczytać, skonfigurować. Okazało się, że pusta baza spokojnie może wstać na 1MB RAM, a po wpakowaniu danych Wordpressa dojść do 3MB.
Dlaczego mój Apache odpalił 9 procesów i dlaczego one są takie duże?
Dowiedziałem się, czym jest mpm_prefork, jak alokuje pamięć, kiedy procesy umierają, dlaczego są takie ciężkie (mod_php).
Zoptymalizowałem to, a PHP-a wyrzuciłem jako oddzielny proces FPM.
Wymieniłem jeszcze OpenSSH na Dropbear (200kb RAM zamiast 1MB), a powłokę zmieniłem na Ash (300kb zamiast 3MB).
Siedziałem nad optymalizacjami przez niemal tydzień. Zmiany były szybkie, ale zdobywanie wiedzy już niekoniecznie.
Czy ta zabawa miała sens? Pod względem użyteczności, absolutnie NIE. Praca na tak słabym sprzęcie nie należy do przyjemnych (ale moje strony stały na tym ponad rok! 😃).
Z punktu widzenia NAUKI?
To jedno z najcenniejszych doświadczeń, jakie miałem jako admin.