Wysoki Load po restarcie VPS

Wysoki Load po restarcie VPS

29 lipca 2021 2 przez gielo

Konfigurując ostatnio niewielki serwer VPS na potrzeby niniejszego bloga oraz poczty zauważyłem, że po jego restarcie tzw. Load rośnie do ponad 20 co oczywiście skutkuje przyblokowaniem innych usług działających na serwerze. Stan ten utrzymuje się około 20min, po czym Load zaczyna spadać do normalnych wartości.

Analizując problem okazało się, że odpowiedzialny za to jest Clamav, więc aby go rozwiązać trzeba jakoś ograniczyć apetyt Clamav na zasoby tak, aby nie blokował poprawnego funkcjonowania innych usług na serwerze. Jak to zrobić? np. w poniższy sposób.

otwórz plik /etc/systemd/system/clamav-daemon.service.d/extend.conf

I na samym końcu w [service] dodaj

IOSchedulingPriority = 7
CPUSchedulingPolicy = 5
MemoryLimit=256M
CPUQuota=20%
Nice = 19

Oczywiście wartości dostosuj do własnych potrzeb wymagań

Kolejnym krokiem, który warto zrobić jest dodanie tzw. SWAP jeśli go nie posiadasz. Co prawda nie rozwiąże on problemu serwera z barkiem pamięci ale pozwoli ci w pewien sposób rozładować nieco obciążenia spowodowane jego brakiem.

Jaka powinna być wielkość takiego pliku/partycji wymiany? Proponuję przeznaczyć na nią tyle ile posiadasz pamięci ram w swoim VPS. Jeśli jest to np. 2GB, na swap przeznacz też 2GB itp.

Na początek utwórz plik wymiany

$ sudo fallocate -l 2G /swapfile

Następnie nadaj mu odpowiednie uprawnienia

$ sudo chmod 600 /swapfile

oraz odpowiednią strukturę

$ sudo mkswap /swapfile

i aktywuj go

$ sudo swapon /swapfile

Na koniec jeszcze dodaj go do /etc/fstab aby aktywował się zawsze automatycznie po restarcie serwera

/swapfile swap swap defaults 0 0

Kolejnym krokiem będzie modyfikacja swappiness, czyli określenie kiedy nasz serwer powinien zacząć korzystać ze swapu. Standardowo jest to 60, czyli od 40% wykorzystania pamięci ram.

$ cat /proc/sys/vm/swappiness

Zmieńmy ten parametr na taki, aby się to odbywało od 90% wykorzystania pamięci ram

$ sudo sysctl vm.swappiness=10

aby ten parametr zmienić na stałe musisz zmodyfikować plik /etc/systcl.conf

i dopisać do niego

vm.swappiness=10

Główną przyczyną modyfikacji tego parametru jest to, że pewnie nie chciałbyś aby przy niewielkiej zajętości pamięci ram, np. twój memcache, redis czy inny serwer cachujący zaczął kozystać z dysku zamiast pamięci ram.

W taki oto dość prosty sposób, dość skutecznie przywrócić możemy prawidłowe funkcjonowanie serwera po jego restarcie.