Czy mam rację, czy mogę wyłączyć wymianę serwera produkcyjnego?
Nie. Zawsze miej miejsce na wymianę.
Próbowałem uruchomić serwer produkcyjny bez zamiany raz i około tydzień później, po aktualizacji Wordpress PHP zaczął jeść znacznie więcej pamięci RAM, niż przewidywaliśmy. Kiedy kończy Ci się pamięć RAM i masz włączoną funkcję wymiany, rzeczy zwalniają (czasem bardzo, czasem tylko trochę, w zależności od tego, co się tam wpycha), ale możesz się zalogować, znaleźć problem i spróbować naprawić to.
Kiedy kończy Ci się pamięć RAM i nie masz wymiany, procesy giną, rzeczy się zatrzymują i przez większość czasu jedyną opcją jest restart. Ale dopóki nie zrestartujesz komputera, prawdopodobnie coś się zepsuje.
W moim świecie złamanie jest znacznie gorsze niż powolne.
Oczywiście, jeśli okaże się, że twój system ciągle używa dużych porcji wymiany (bardzo często użyje niektórych jako sposobu na wyrzucenie starych pamięci podręcznych), oczywiście masz problem („proszę włóż pamięć RAM”), ale masz to jako zdecydowanie zaleca się stosowanie siatki bezpieczeństwa.
W odpowiedzi na komentarz SpamapS:
W świecie „udanych stron internetowych” dostępne są przełączenia awaryjne, równoważenie obciążenia i inne narzędzia, które pozwalają maszynie eksplodować i mają zerowy wpływ na resztę witryny. Ale to wymaga dużo gotówki. Nadmiarowy sprzęt nie jest ekonomiczny dla większości witryn, nawet jeśli przyciągają pieniądze.
Całkowicie nie zgadzam się z twoim komentarzem dotyczącym czasu pracy. W tradycyjnej konfiguracji e-commerce, jeśli ludzie nie widzą Twojej witryny, nie mogą kupić od Ciebie. To nie jest tylko e-handel, wszystkie interesy handlowe online stają się o wiele większe, jeśli nie masz czasu. Wiem, ponieważ prowadzę witryny i usługi dla firm oraz prowadzę własne witryny. Powolny = zrzędliwy, ale w dół = furia. Nawet jeśli zejdziesz tylko na minutę na raz, jeśli użytkownik zobaczy powiadomienie o „przestoju w konserwacji” więcej niż kilka razy, zakłada, że nie możesz utrzymać witryny.
Wolny serwer jest mniej niż idealny, ale nie można go ciągle uruchamiać. Jest to ostateczność, aby pozwolić, aby rzeczy działały podczas ich naprawy.
Zakładasz również, że na komputerze działa tylko jedna usługa. Znowu może to być prawdą, jeśli masz megabucks, aby wszystko rozdzielić, ale w prawdziwym świecie rzeczy się zbijają. Wiele witryn, demonów ssh, serwerów ftp, serwerów e-mail itp. Jeden proces przechodzący w zamianę może nawet nie mieć wpływu na inną usługę. Bez wymiany wszystko ma równe szanse na natychmiastowe, losowe zakończenie. Nie masz nad tym kontroli.
Oczywiście zamiana nie jest jedyną odpowiedzią. Potrzebujesz monitorowania, aby ostrzec Cię, gdy nie masz pamięci RAM, ale po prostu wyciągnięcie wtyczki i ponowne uruchomienie nie jest odpowiedzią dla większości ludzi. Jestem pewien, że działa to na dowolną międzynarodową stronę internetową, za którą jesteś odpowiedzialny, ale dla nas zwykłych śmiertelników (stanowiących większość Internetu), ponieważ jest to komercyjne samobójstwo.
Muszę się nie zgadzać z wymianą serwerów produkcyjnych.
Z mojego doświadczenia wynika, że zamiana dysków obrotowych sprawia, że Twój system jest mniej przewidywalny i bardziej podatny na frustrujące awarie całego systemu. Popularny serwer o wysokim obciążeniu, który robi wszystko z lokalnym wolnym dyskiem, szybko zmieni się w coś znacznie gorszego niż stan awarii. Czasy reakcji wzrosną do 100 razy ich normalny poziom, a proste rzeczy, takie jak logowanie za pomocą konsoli lub ssh, mogą zająć kilka minut.
Zamiana SSD jest szczególnym przypadkiem i przynajmniej spowolniłaby czas wyszukiwania, który zwykle zabija system. Jednak zapisy są nadal powolne, więc nadal będziesz musiał długo i długo czekać na wyleczenie z procesu wymykania się spod kontroli.
Bez wymiany serwer LAMP po prostu zabije procesy w celu zwolnienia pamięci RAM. Właściwe monitorowanie powinno ostrzec o tym i usunąć serwery z produkcji, jeśli krytyczne procesy zostaną zabite. Najgorszym przypadkiem jest to, że wszystkie metody logowania zostały zabite i trzeba wykonać twardy reset / cykl zasilania. Ten najgorszy przypadek jest nadal tak samo prawdopodobny w przypadku maszyny sterującej, która wymyka się spod kontroli, ale jest znacznie trudniejszy do wykrycia.
Jeśli używasz PHP, włącz limity pamięci i monitoruj dzienniki pod kątem ich awarii. Oto sztuczka, ustaw niższy limit na serwerze deweloperskim niż w produkcji. Jeśli używasz mod_php pod Apache, ustaw MaxRequestsPerChild na kilka tysięcy, aby httpd umarł, zanim z czasem stanie się zbyt duży. Przede wszystkim monitoruj zużycie pamięci! Często pamięć przesuwa się w czasie i po prostu trzeba okresowo uruchamiać nieszczelną usługę podczas debugowania problemu.
źródło
Przestrzeń wymiany jest używana, gdy system zdecyduje, że potrzebuje pamięci fizycznej do aktywnych procesów i nie ma wystarczającej ilości nieużywanej pamięci fizycznej. Jeśli system potrzebuje więcej zasobów pamięci lub miejsca, nieaktywne strony w pamięci fizycznej są następnie przenoszone do przestrzeni wymiany, zwalniając w ten sposób tę pamięć fizyczną do innych zastosowań.
Taka sytuacja zdarzy się wiele razy na serwerze.
za). Niezoptymalizowany skrypt może zużywać dużo pamięci
b). Skrypty takie jak tworzenie kopii zapasowych zawsze zajmują ogromną pamięć
c). duży ruch
Dlatego dobrą praktyką jest posiadanie przestrzeni wymiany.
Więcej informacji: https://help.ubuntu.com/community/SwapFaq
źródło
Korzystanie z zamiany zapewni dodatkowe zabezpieczenie przed niestabilnością serwera. Może się zdarzyć, że skończy się pamięć RAM, a na serwerze bez zamiany może to doprowadzić do miękkiej awarii.
Prawdopodobnie jestem teraz w mniejszości, kiedy mówię, że nadal ma sens, jak zwykli to zalecać, mieć dwa razy więcej wymiany niż w głównej pamięci. Nawet w systemie z 96 GB pamięci RAM.
Nie kosztuje dużo, a jeśli będziesz go potrzebować, będziesz zadowolony, że go dostałeś. Przyczyną włączenia swap jest po prostu bardzo prosta analiza kosztów i korzyści. Zrób to! :-)
źródło
Chciałbym podziękować Oli za piękną - znam starą - odpowiedź. Uważam, że partycjonowanie to zawsze zielony temat! Całkowicie zgadzam się z linią postu Oli i chciałbym udostępnić ten - oczywiście możliwy do ulepszenia - skrypt, którego używam do monitorowania wykorzystania wymiany serwerów.
Zawsze konfiguruję serwery i usługi tak, aby działały bez żadnych zamian. Kiedy tak się stanie, upewnij się, że coś idzie nie tak, albo w najlepszym razie coś nie wychodzi z twoich początkowych planów.
Skryptuję ten skrypt co pół godziny w środowisku produkcyjnym. Wyśle mi powiadomienie, jeśli Zamiana użycia! = 0k. Będę w stanie szybko zbadać / podjąć działania w tej sprawie, przez większość czasu, zanim coś naprawdę pójdzie nie tak .
Oczekuje, że będziesz mieć: bash, top, echo, awk i działające polecenie poczty, bez wykonywania żadnych kontroli.
Mam nadzieję, że to pomaga.
źródło