Sprawdź procesor i pamięć na serwerze z systemem Linux
Zasoby takie jak procesor i pamięć (RAM) są integralną częścią funkcjonalności witryny. Jeśli Twój kod zużyje za dużo, witryna może spowolnić lub całkowicie przestać działać. Wszystkie inne procesy (takie jak poczta e -mail) współdzielą te same zasoby z witrynami na serwerze. Każdy proces, który zabiera więcej niż (oczekiwany) sprawiedliwy udział, może całkowicie wyłączyć serwer.Po co mi sprawdzać użycie zasobów?
- Twoja witryna oparta na bazie danych (np. WordPress) działa wolno.
- Przesyłanie wiadomości e -mail zajmuje dużo czasu.
- Twoja witryna wyświetla błąd lub po prostu obraca się
- Zadania wykonywane na serwerze trwają dłużej niż zwykle (np. Tworzenie kopii zapasowych).
Jak sprawdzić użycie zasobów?
Linux oferuje kilka narzędzi do badania użycia procesora i pamięci, takich jak top , sar i watch .
Górne polecenie umożliwia przeglądanie zadań systemowych działających w czasie rzeczywistym. Możesz wyświetlić ogólne informacje, takie jak czas pracy, średnie obciążenie, użycie procesora i pamięci. Przełącznik -c umożliwia wyświetlenie nazwy programu w obszarze POLECENIE. Aby uzyskać pełną listę klawiszy skrótów, użyj man top w SSH.
[root@server ~] $ top -c top - 15:08:23 w górę 115 dni, 6:37, 2 użytkowników, średnie obciążenie: 1.76, 1.35, 1.13 Zadania: łącznie 330, 1 uruchomiony, 326 uśpiony, 0 zatrzymanych, 3 procesory zombie: 0,7%nas, 2,9%s y, 0,0%ni, 81,5%id, 14,9%wa, 0,0%hi, 0,1%s i, 0,0%s Pamięć: łącznie 32754672k, używane 28808088k, 3946584k wolne, 321260k bufory Zamiana: 8388604k łącznie, 25992k używane, 8362612k wolne, 8140560k buforowane PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6926 mysql 20 0 130g 16g 52.2 27065: 56/usr/sbin/mysqld --basedir =/usr --datadir =/var/lib/mysql --plugin-dir =/usr/lib64/mysql/plugin 2454 td-agent 20 0 1210m 160m 2440 S 0,7 0,5 347: 19,48/opt/td-agent/embedded/bin/ruby -Eascii-8bit: ascii-8bit/
System Activity Reporter (sar) to narzędzie pomagające w monitorowaniu statystyk użycia serwera. Sar jest częścią pakietu sysstat . Użycie samego polecenia sar spowoduje wyświetlenie statystyk z ostatnich 24 godzin.
sar -f umożliwia przeglądanie historycznych plików dziennika rozpoczynających się o godzinie 00:00 danego dnia.
[root@server ~] $ sar -f/var/log/sa/sa10 Linux 2.6.32-042stab141.3 (server-hostname.net) 10.01.2022 _x86_64_ (24 CPU) 12:00:01 AM CPU %user %fajnie%s ystem %iowait%s turkusowy %bezczynności 12:10:01 wszystkie 1,92 0,00 0,39 0,00 0,00 97,69 12:20:01 wszystkie 1,63 0,00 0,34 0,00 0,00 98,02 12:30:01 wszystkie 1,64 0,00 0,41 0,01 0,00 97,94 12:40:01 wszystkie 2,85 0,00 0,61 0,00 0,00 96,54 12:50:01 Wszystkie 2,71 0,00 0,57 0,01 0,00 96,72 01:00:01 Wszystkie 2,02 0,00 0,38 0,00 0,00 97,60 01:10:01 Wszystkie 1,43 0,00 0,30 0,00 0,00 98,27
sar -r wyświetli statystyki wolnej i używanej pamięci
[root@server ~] $ sar -r Linux 2.6.32-042stab141.3 (server-hostname.net) 02.02.2022 _x86_64_ (24 CPU) 12:00:01 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 12:10:01 99454800 32354304 24,55 1429856 22624260 8285744 5,91 12:20:01 99760972 32048132 24,31 1429884 22631184 7960428 5,68 12:30:01 99751920 32057184 24,32 1429920 22638392 7974804 5,69 12:40:01 142 8035000 5,73 12:50:01 99752696 32056408 24,32 1430012 22644804 7891100 5,63
Zegarek systemu Linux umożliwia obserwowanie poleceń lub zadań w trakcie ich wykonywania lub wykonywania. watch "mysql -e'show full processlist; '" pokaże wszystkie uruchomione zapytania mysql, aktualizowane co 2 sekundy.
Co 2,0 s: mysql -e'show full processlist; ' Sat Feb 12 11:09:56 2022 Id User Host db Polecenie Stan Informacje 26574057 mysql_db1 localhost mysql_db1 Zapytanie 2 Wysyłanie danych SELECT * z db_data_main gdzie DOT_NUMBER = 1381207 26574063 mysql_db1 localhost mysql_db1 Zapytanie 1 mysql_wp3 localhost mysql_wp3 Uśpij 0 NULL 26574068 root localhost NULL Zapytanie 0 init pokaż pełną listę procesów
Następne kroki
Wysokie użycie zasobów może być jednorazowe i spowodowane złośliwym ruchem lub zawieszeniem się procesu (np. Dużą kopią zapasową). Częste wysokie zużycie zasobów, które nie jest spowodowane ruchem lub zawieszeniem się procesu, można rozwiązać jedynie poprzez optymalizację lub aktualizację. Pamiętaj, że jeśli nie optymalizujesz serwera i witryn, aktualizacja jest tylko tymczasowym rozwiązaniem.
Oznaki, że nadszedł czas na optymalizację (serwer i witryny)
- Nie spowodowane przez złośliwy ruch
- Kod witryny jest nieaktualny/generuje przestarzałe błędy
- Zużycie procesora jest wysokie, ale użycie pamięci jest niskie.
- Zapytania MySQL są opóźnione, gdy ruch jest większy
Znaki, że być może nadszedł czas na aktualizację
- Ruch w Twojej witrynie (witrynach) stale rośnie
- Serwer został zoptymalizowany pod kątem potrzeb Twojej witryny
- Witryny zostały zoptymalizowane poprzez wyeliminowanie długich zapytań mysql i zaktualizowanie kodu w celu obsługi nowszych wersji języka PHP.
- Używasz pamięci podręcznej (takiej jak Memcache), ale obciążenie pozostaje wysokie