Mam serwer deweloperski, na którym sshd
czasami przestaje działać, ponieważ w maszynie brakuje pamięci RAM. Tak, kończy nam się pamięć i aktualizacja nie jest obecnie realnym wyborem. Chcę powiedzieć maszynie: „Rób, co chcesz, ale pomiń 20 MB i trochę procesora sshd
!”.
Jak można to zrobić?
performance
limit
phunehehe
źródło
źródło
sshd
jest dobrze wychowany, myślę, że utknąłby, gdyby nie było wystarczającej ilości procesora / pamięci RAM do użycia, prawda?Odpowiedzi:
Prawdopodobnie można coś takiego osiągnąć, używając cgroups z kontrolerem zasobów pamięci .
Sądzę, że umieściłbyś wszystkie swoje zadania zajmujące zasoby w ograniczonym zakresie (procesor i pamięć RAM)
cgroup
i pozostawiłeśsshd
„na zewnątrz”, aby nie było ograniczone.(Dodanie większej ilości wymiany, nawet w postaci pliku wymiany, może być jednak dobrą opcją).
źródło
Och, ale cgroups są łatwe :) Zainstaluj pakiet libcgroup. Utwórz plik /etc/cgconfig.conf:
Rozpocznij
cgconfig
proces, który utworzy hierarchię, cgroups i ustawi ograniczenia. Jeśli to się powiedzie, masz dwie grupy, z których każda ma przypisane 50% CPU i 1G dostępnej pamięci (nie wiem, jaka jest twoja rzeczywista ilość dostępnej pamięci; zakładając, że w tym przykładzie jest to 2G). Teraz wystarczy przenieść wszystkie zadania (tj. Wszystkie procesy uruchomione w systemie) z grupy głównej do grupy nosshd:Następnie wystarczy pobrać PID
sshd
procesu i przenieść go do pliku zadań sshd:Ta-da, gotowe. Teraz możesz mieć pewność, że sshd będzie zawsze mieć 50% procesora i 1G pamięci.
źródło
Użyj,
renice
aby uzyskać wyższy priorytetsshd
lub sprawdzić księgowość. (acct) -> dzięki temu możesz ustawić zasoby dla użytkowników, więc uruchom sshd z sźródło
ionice
do tego i prawdopodobnie zacznę od sshd z przyjemnością, że później go nie przerabiam.Bardziej ogólnym rozwiązaniem problemu wykorzystania zasobów aplikacji jest uruchamianie aplikacji w kontenerze za pomocą Dockera . Następnie można uruchamiać kontenery z limitami wykorzystania procesora i pamięci podobnymi do cgroups.
źródło