Linux szerverek teljesítmény-optimalizálása és monitorozása
Bevezetés
A modern informatikai infrastruktúrákban a Linux szerverek teljesítményének optimalizálása és hatékony monitorozása kritikus fontosságú a szolgáltatások megbízható működéséhez. Ez a cikk áttekinti a Linux rendszerek teljesítményének főbb aspektusait, a leghatékonyabb monitorozási technikákat és gyakorlati optimalizálási módszereket.
A teljesítményoptimalizálás alapelvei
A sikeres teljesítményoptimalizálás nem egyszeri feladat, hanem folyamatos folyamat, amely az alábbi alapelveken nyugszik:
A mérés fontossága
A teljesítményoptimalizálás első és legfontosabb lépése a megfelelő mérés:
- Mérj először, optimalizálj utána - mindig mérhető adatokra alapozzuk a döntéseinket
- Alapvonal meghatározása - a későbbi összehasonlítás alapja
- Rendszeres újramérés - a változtatások hatásának kiértékelése
Az optimalizálás célzott megközelítése
Az erőforrások szűkösek, ezért fontos a prioritások meghatározása:
- Szűk keresztmetszetek azonosítása - mindig a rendszer legszűkebb erőforrását érdemes először optimalizálni
- 80/20 szabály - a problémák 80%-át általában a rendszer 20%-a okozza
- Költség-haszon elemzés - nem minden optimalizálás éri meg a ráfordított erőforrást
Teljesítménymetrikák és monitorozás
Alapvető teljesítménymetrikák
CPU metrikák
- Load average: A rendszer terhelésének átlagos értéke
- CPU használat: Felhasználó, rendszer, I/O várakozás és üresjárati idő százalékos megoszlása
- Futási sorok: Futásra váró folyamatok száma
Memória metrikák
- Szabad és használt memória: Fizikai memória kihasználtsága
- Swap használat: Cserelemez forgalom és kihasználtság
- Buffer/cache: A kernel által gyorsítótárazott adat
Lemez metrikák
- IOPS (I/O Operations Per Second): I/O műveletek másodpercenkénti száma
- Throughput: Átviteli sebesség (MB/s)
- Latency: Válaszidő milliszekundumban
- Queue depth: I/O várakozási sor hossza
Hálózati metrikák
- Bandwidth: Átviteli sebesség (Mbps)
- Connections: Kapcsolatok száma és állapota
- Packet loss: Elveszett csomagok aránya
- Latency: Késleltetés
Alapvető monitorozó parancsok
Rendszer általános állapota
# Rendszer terhelés, futási idő, bejelentkezett felhasználók
uptime
# Dinamikus rendszermonitor
top
htop
# Rendszer és kernel információk
uname -a
cat /etc/os-release
CPU monitorozás
# CPU statisztikák valós időben
mpstat -P ALL 2
# Kernel és felhasználói folyamatok CPU használata
vmstat 2
# Folyamatok CPU használat szerint rendezve
ps aux --sort=-%cpu | head -10
Memória monitorozás
# Memória használat áttekintése
free -h
# Részletes memória statisztikák
cat /proc/meminfo
# Folyamatok memóriahasználat szerint rendezve
ps aux --sort=-%mem | head -10
Lemez monitorozás
# Lemezhasználat
df -h
# I/O statisztikák
iostat -xz 2
# Folyamatban lévő I/O műveletek
iotop
# Részletes fájlrendszer statisztikák
tune2fs -l /dev/sda1
Hálózat monitorozás
# Hálózati kapcsolatok
netstat -tuln
ss -tuln
# Hálózati interfészek statisztikái
ifstat
iftop
# Hálózati csomagok vizsgálata
tcpdump -i eth0
CPU teljesítmény optimalizálása
CPU ütemezés és prioritások
A Linux kernel CPU ütemező rendszere szabályozza a folyamatok futását:
# Folyamat prioritásának módosítása
nice -n 10 ./alacsony_prioritasu_alkalmazas
# Futó folyamat prioritásának módosítása
renice 10 -p 1234
# CPU affinitás beállítása (0. és 1. CPU-ra korlátozás)
taskset -c 0,1 ./cpu_intenziv_alkalmazas
CPU Governor beállítások
A modern processzorok különböző teljesítmény/energiahatékonysági módokat támogatnak:
# Elérhető CPU frekvencia lépcsők és governor-ok
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
# Aktuális frekvencia lekérdezése
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
# Performance governor beállítása minden CPU-ra
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Kernel paraméterek hangolása
A /etc/sysctl.conf
fájlban optimalizálhatjuk a kernel működését:
# Timer frekvencia csökkentése alacsonyabb CPU használatért
kernel.hz=100
# I/O ütemező beállítása
echo deadline > /sys/block/sda/queue/scheduler
# sysctl beállítások alkalmazása
sysctl -p
Memóriakezelés és optimalizálás
Swap beállítások optimalizálása
# Swappiness érték módosítása (0-100)
# Alacsonyabb érték: később kezdi használni a swap-et
echo 10 > /proc/sys/vm/swappiness
# Tartós beállítás
echo "vm.swappiness=10" >> /etc/sysctl.conf
# Dirty ratio beállítások (háttérben történő írás vezérlése)
echo "vm.dirty_ratio=20" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
OOM (Out Of Memory) killer beállítások
# Folyamat OOM score módosítása
echo -1000 > /proc/$(pidof critical-service)/oom_score_adj # Védi a folyamatot
# OOM killer kikapcsolása egy szervernek szentelt alkalmazásnál
echo "vm.overcommit_memory=2" >> /etc/sysctl.conf
Nagy memóriájú rendszerek optimalizálása
NUMA (Non-Uniform Memory Access) architektúrák esetén:
# NUMA információk megtekintése
numactl --hardware
# Alkalmazás indítása adott NUMA node-on
numactl --cpunodebind=0 --membind=0 ./alkalmazas
Lemezteljesítmény javítása
Fájlrendszer választás és hangolás
A különböző fájlrendszerek különböző előnyökkel rendelkeznek:
- Ext4: Általános célú, megbízható, jó teljesítmény
- XFS: Nagy fájlok, jó skálázhatóság
- Btrfs: Fejlett funkciók, pillanatképek
- ZFS: Integritásvédelem, tömörítés, deduplikáció
Ext4 fájlrendszer hangolása:
# Fájlrendszer jellemzők megtekintése
tune2fs -l /dev/sda1
# Journaling módosítása
tune2fs -o journal_data_writeback /dev/sda1
#