Când un server funcționează lent, instinctul majorității administratorilor este să verifice procesorul cu top sau memoria cu free. În majoritatea cazurilor de producție cu baze de date (MySQL, PostgreSQL, ElasticSearch), adevărata cauză a încetinirii nu este CPU-ul, ci saturația operațiunilor de intrare/ieșire pe disc (I/O Bottleneck). Utilitarul iostat (inclus în pachetul sysstat) oferă vizibilitate completă asupra performanței subsistemului de stocare.
Comanda standard de producție pentru iostat
# Parametri esențiali:
# -x : Afișează statisticile extinse detaliate
# -z : Omite dispozitivele complet inactive (fără trafic în intervalul curent)
# 1 : Actualizare la fiecare 1 secundă
# 5 : Ieșire după 5 rapoarte
iostat -xz 1 5
Cum se Interpretează Metricile Esențiale din iostat
| Coloană | Semnificație | Prag de Alarmă în Producție |
|---|---|---|
r/s și w/s |
Numărul de operațiuni de citire și scriere finalizate per secundă (IOPS). | Comparați cu specificațiile hardware ale discului (un SSD SATA oferă ~50k-90k IOPS, un NVMe > 500k IOPS). |
rMB/s și wMB/s |
Lățimea de bandă transferată pe secundă (în Megaocteți). | Arată volumul brut de date citite sau scrise secvențial pe disc. |
await (și r_await, w_await) |
Timpul mediu total de așteptare (în milisecunde) petrecut de o cerere I/O de la trimitere până la finalizare. | Pe SSD-uri NVMe, await trebuie să fie sub 1-2 ms! Dacă depășește 15-20 ms, discul este supraîncărcat. |
%util |
Procentul de timp în care dispozitivul a avut cel puțin o cerere activă în lucru. | Dacă %util stă constant la 100%, discul a atins capacitatea fizică maximă de procesare a cererilor paralele! |
Ce faci dacă discul este saturat (%util = 100%)?
# Pasul 1: Identifică procesul vinovat de I/O masiv folosind iotop:
sudo iotop -oPa
# Pasul 2: Verifică dacă problema este din baze de date (interogări lente fără indecși
# care forțează scanări complete de pe disc) sau din scrieri masive de loguri nebuferate.