Diagnosticarea încărcării serverului (CPU, RAM, disc, rețea)
Comenzile de bază pentru a afla de ce serverul este lent sau nu răspunde și ce faceți în fiecare caz.
Pe această pagină
Când serverul devine lent sau nu mai răspunde, cauza este de cele mai multe ori una dintre patru resurse epuizate: procesorul (CPU), memoria (RAM), discul sau rețeaua. Ghidul arată comenzile care găsesc resursa vinovată și ce faceți în fiecare caz. Comenzile se rulează pe server, prin SSH, ca root. Evoluția în timp o vedeți în panoul app.blackbox.md, pe pagina „Monitorizare” (app.blackbox.md/monitoring, meniul lateral → „Infrastructură” → „Monitorizare”).
Disponibil pentru: oricine are acces root prin SSH la un server BLACKBOX cu Ubuntu, Debian, AlmaLinux sau CentOS Stream. Graficele din panou: titularul serverului, pentru serverele cu serviciul suplimentar Monitoring activ.
Serverul este lent sau nu răspunde: pașii în ordine
Conectați-vă prin SSH (Conectarea la server prin SSH (Windows, macOS, Linux)):
ssh root@IP_SERVERDacă vă conectați, chiar și greu, nu reporniți încă: repornirea șterge urmele problemei. Rulați comenzile din secțiunile de mai jos, începând cu „Privire rapidă”.
Dacă SSH nu răspunde (conexiunea expiră sau sesiunea rămâne blocată): în panou deschideți „Serverele mele”, apăsați „Repornește” pe cardul serverului și confirmați „Reporniți {name}?”. Așteptați 30–60 de secunde și conectați-vă din nou. Dacă panoul afișează
power_action_failed, serverul poate fi oprit: apăsați „Pornește”. Detalii: Repornirea, oprirea și pornirea serverului.Dacă serverul tot nu răspunde după câteva minute, scrieți suportului (Cum contactați suportul BLACKBOX). Indicați adresa IP a serverului, numărul comenzii (
BBX-…) și data și ora la care a început problema. Pentru o urgență în orele de lucru sunați și la +373 78 003948 (luni–vineri, 09:00–18:00, ora Moldovei).După ce serverul răspunde din nou, aflați cauza: vedeți întrebarea „Serverul a căzut, iar după repornire merge. Cum aflu cauza?” de la final.
Dacă SSH răspunde cu Permission denied, serverul funcționează, iar problema este la autentificare: Nu mă pot conecta prin SSH.
Notă Clienții nu au consolă web sau VNC, iar panoul nu are buton de repornire forțată (hard reset). Dacă „Repornește” nu ajută, doar echipa BLACKBOX poate interveni.
Privire rapidă: procesor, memorie, procese
uptime: încărcarea medie
uptime
nproc 10:42:01 up 12 days, 3:05, 1 user, load average: 3.85, 2.10, 1.20
2Cele trei numere de după load average sunt încărcarea medie pe ultimul minut, pe ultimele 5 și pe ultimele 15 minute. Comparați-le cu numărul de vCPU al serverului: îl afișează nproc și apare pe cardul serverului din „Serverele mele”, în rândul „Configurație” (de exemplu, „2 vCPU · 4 GB · 40 GB”).
| Încărcarea medie | Ce înseamnă |
|---|---|
| sub numărul de vCPU | procesorul mai are rezervă |
| cât numărul de vCPU | serverul lucrează la capacitate maximă |
| constant peste numărul de vCPU | procesele stau la coadă: serverul este suprasolicitat |
În exemplu, 3,85 la 2 vCPU înseamnă suprasolicitare, iar primul număr mult mai mare decât al treilea arată că încărcarea a crescut în ultimele minute. În Linux, încărcarea include și procesele care așteaptă discul: o încărcare mare cu procesorul aproape liber indică discul (coloana wa de mai jos).
top sau htop: ce proces consumă
toptop arată sus rândul %Cpu(s) (coloanele sunt explicate la vmstat) și memoria, iar dedesubt procesele, cele mai active primele. Tastele utile: P sortează după CPU, M după memorie, 1 afișează fiecare vCPU separat, q iese.
htop arată aceleași date, colorate și mai ușor de citit. Pe Ubuntu și Debian îl instalați așa:
apt update
apt install -y htopPe AlmaLinux și CentOS Stream pachetul vine din depozitul EPEL:
dnf install -y epel-release
dnf install -y htopLista proceselor, ordonată după CPU și după memorie, pe care o puteți copia într-un tichet:
ps aux --sort=-%cpu | head -n 15
ps aux --sort=-%mem | head -n 15free -h: memoria
free -h total used free shared buff/cache available
Mem: 3.8Gi 3.2Gi 118Mi 24Mi 512Mi 356Mi
Swap: 0B 0B 0BUitați-vă la coloana available, nu la free: Linux folosește memoria liberă drept cache (buff/cache) și o eliberează când o cer aplicațiile. Memoria este epuizată când available scade aproape de zero, iar swap-ul, dacă există, este plin. Swap: 0B înseamnă că serverul nu are swap.
vmstat 1 5: evoluția pe câteva secunde
vmstat 1 5Comanda afișează 5 rânduri, la o secundă unul de altul. Primul rând este media de la pornirea serverului, așa că citiți rândurile următoare.
| Coloană | Ce arată | Semn de problemă |
|---|---|---|
r |
procese care așteaptă procesorul | constant peste numărul de vCPU |
b |
procese blocate, de obicei în așteptarea discului | constant peste 0 |
si, so |
memorie citită din swap / scrisă în swap | constant peste 0: memoria RAM nu ajunge |
us, sy |
procentul de CPU folosit de aplicații / de sistem | împreună aproape de 100 |
wa |
procentul de CPU care așteaptă discul | valori mari: discul încetinește serverul |
st |
timpul „furat” (steal): cât a așteptat procesorul virtual după serverul fizic | constant mare: vedeți mai jos |
Valoarea st există doar pe serverele virtuale, iar câteva procente din când în când sunt normale. Dacă st rămâne mare minute în șir, deși aplicațiile dvs. nu solicită mult procesorul, scrieți suportului și atașați ieșirea comenzii vmstat 1 5.
Discul: spațiu și viteză
df -h
df -idf -h arată spațiul ocupat pe fiecare partiție: urmăriți coloana Use% pentru /. df -i arată inode-urile (numărul de fișiere): la IUse% de 100% nu se mai pot crea fișiere, chiar dacă mai este spațiu. Un disc plin oprește bazele de date și site-urile. Cum găsiți ce ocupă spațiul și cum îl eliberați: Discul serverului este plin.
Încărcarea discului o măsurați cu iostat din pachetul sysstat. Instalați-l pe Ubuntu și Debian:
apt update
apt install -y sysstatPe AlmaLinux și CentOS Stream:
dnf install -y sysstatApoi rulați:
iostat -x 1 3Comanda afișează 3 rapoarte, la o secundă unul de altul; primul este media de la pornire. Pentru discul principal (de obicei vda sau sda) urmăriți:
| Coloană | Ce arată | Semn de problemă |
|---|---|---|
r/s, w/s |
citiri / scrieri pe secundă | suma stă lângă limita discului |
r_await, w_await |
durata medie a unei citiri / scrieri, în milisecunde | zeci sau sute de milisecunde |
%util |
cât din timp discul a fost ocupat | constant aproape de 100 |
Procesul care citește sau scrie cel mai mult îl găsiți cu pidstat din același pachet (coloanele kB_rd/s și kB_wr/s):
pidstat -d 1 5Pe pagina planurilor, familia Basic este descrisă cu disc de 300 IOPS, iar familiile Standard și CPU cu 3000 IOPS. Dacă r/s și w/s adunate stau lângă această valoare, viteza discului limitează serverul. Upgrade-ul din panou rămâne în aceeași familie de planuri; pentru alt tip de disc, scrieți-ne.
Rețeaua și serviciile
Ce programe ascultă pe porturi
ss -tulpnFiecare rând arată un port deschis și programul care îl ascultă, de exemplu 0.0.0.0:80 cu users:(("nginx",…)). 0.0.0.0 sau * înseamnă toate adresele, 127.0.0.1 doar serverul însuși. Dacă site-ul nu răspunde și lipsesc porturile 80 și 443, serverul web nu rulează. Ce porturi sunt accesibile din internet: Firewall: filtrarea din rețea și ufw/firewalld pe server.
Traficul și conexiunile
sar -n DEV 1 5
ss -ssar (tot din sysstat) afișează în fiecare secundă traficul primit și trimis pe fiecare interfață, în coloanele rxkB/s și txkB/s. ss -s numără conexiunile deschise. Adresele cu cele mai multe conexiuni:
ss -tn state established | awk 'NR>1 {print $4}' | sed 's/:[0-9]*$//' | sort | uniq -c | sort -rn | headÎncercări de ghicire a parolei SSH
Pe Ubuntu și Debian:
journalctl -u ssh --since "1 hour ago" | grep -ciE "failed password|invalid user"Pe AlmaLinux și CentOS Stream:
journalctl -u sshd --since "1 hour ago" | grep -ciE "failed password|invalid user"Rezultatul este numărul de încercări eșuate din ultima oră. Sute sau mii înseamnă că roboți încearcă parole pe server. Instalați o cheie SSH, apoi dezactivați din panou autentificarea cu parolă, cu butonul „Dezactivează login cu parolă” (Activarea și dezactivarea autentificării SSH cu parolă), și instalați fail2ban (Protecție împotriva încercărilor de ghicire a parolei cu fail2ban). Dacă serverul primește mult trafic de la multe adrese și rețeaua este saturată, scrieți suportului.
Serviciile căzute și erorile din jurnal
systemctl --failed
journalctl -p err -bsystemctl --failed listează serviciile care au eșuat; 0 loaded units listed. înseamnă că nu există. journalctl -p err -b arată erorile de la ultima pornire (ieșiți cu q). Pentru un serviciu din listă vedeți starea, ultimele mesaje, apoi reporniți-l:
systemctl status NUME_SERVICIU
journalctl -u NUME_SERVICIU -n 50 --no-pager
systemctl restart NUME_SERVICIUMemoria epuizată (OOM)
Când se termină memoria RAM și swap-ul, nucleul Linux oprește forțat un proces, de regulă pe cel care folosește cea mai multă memorie (OOM killer). De obicei este baza de date sau aplicația: site-ul cade brusc, fără o eroare în aplicație. Verificați:
journalctl -k | grep -i "out of memory"
dmesg -T | grep -iE "out of memory|killed process"Un rând de felul acesta confirmă cauza:
Out of memory: Killed process 1234 (mysqld) total-vm:2457600kB, anon-rss:1503232kB, …Ce faceți:
- Porniți din nou serviciul oprit, cu
systemctl restart(secțiunea de mai sus). - Adăugați swap, ca rezervă pentru vârfuri scurte: Adăugarea memoriei swap.
- Reduceți memoria folosită de aplicație: mai puține procese PHP-FPM (
pm.max_children), un buffer mai mic pentru MariaDB/MySQL (innodb_buffer_pool_size), limite de memorie pentru containerele Docker. - Dacă aplicația are nevoie constant de mai multă memorie, treceți la un plan mai mare: Upgrade server: trecerea la un plan mai mare.
Cauze frecvente
| Ce vedeți | Cauza probabilă | Ce faceți |
|---|---|---|
| Un proces ține procesorul la 100% mult timp | proces scăpat de sub control: o buclă, un script blocat, sarcini cron suprapuse | reporniți serviciul sau opriți procesul (comenzile de mai jos) |
available aproape 0, mesaje „Out of memory” |
memoria epuizată | secțiunea „Memoria epuizată (OOM)” |
Use% 100% pe /, eroarea „No space left on device” |
disc plin | Discul serverului este plin |
wa mare, %util aproape de 100 |
disc suprasolicitat | găsiți procesul cu pidstat -d; vedeți limita de IOPS a planului |
| Sute de încercări SSH eșuate, multe conexiuni de la aceleași adrese | atac de ghicire a parolei sau roboți | chei SSH și Protecție împotriva încercărilor de ghicire a parolei cu fail2ban |
| Încărcarea stă constant peste numărul de vCPU la activitatea obișnuită a aplicației | plan prea mic pentru aplicație | Upgrade server: trecerea la un plan mai mare |
st mare minute în șir |
serverul fizic este încărcat | scrieți suportului, cu ieșirea vmstat 1 5 |
Dacă procesul aparține unui serviciu (nginx, php-fpm, mariadb etc.), reporniți serviciul:
systemctl restart NUME_SERVICIUAltfel, cereți procesului să se oprească (PID este numărul din prima coloană a lui top):
kill PIDDoar dacă după câteva secunde procesul încă rulează, opriți-l forțat:
kill -9 PIDAtenție Înainte să opriți un proces, aflați ce este, cu
ps -fp PIDsausystemctl status PID. Nu opriți serviciulssh(sshdpe AlmaLinux și CentOS Stream): pierdeți accesul. Procesulalloyeste agentul serviciului Monitoring; fără el graficele din panou se opresc. Un proces necunoscut care ține procesorul ocupat poate fi semn de compromitere: Serverul a fost spart sau este atacat: ce faceți.
Graficele din panou
Comenzile arată ce se întâmplă acum. Ca să vedeți când a început problema, folosiți pagina „Monitorizare” din panou. Pentru serverele cu serviciul Monitoring activ, blocul „Tendințe” arată graficele „Utilizare CPU (%)”, „Utilizare RAM (%)”, „Utilizare disc (%)”, „Rețea (octeți/s)”, „Încărcare medie (1m)” și „Procese”, pe intervale de la „1 h” la „90 zile”. Metricile se păstrează aproximativ 15 zile. Pe aceeași pagină, cardul „Alerte” afișează alertele serverelor dvs. și vă poate trimite email.
- Ce arată pagina: Pagina „Monitorizare”.
- Alertele și emailurile: Alerte și notificări pe email.
- Cum obțineți serviciul: Serviciul Monitoring: agentul instalat pe server.
Fără serviciul Monitoring, pagina nu are date despre server; diagnosticați cu comenzile din acest ghid.
Ce trimiteți suportului
Dacă nu găsiți cauza, deschideți un tichet: „Contul meu” → „Ajutor și suport” → „Tichet nou” (Deschiderea unui tichet de suport). În câmpul „Server (opțional)” scrieți adresa IP a serverului. În „Descrieți problema” precizați când a început problema și ce ați încercat, apoi lipiți ieșirea acestor comenzi:
uptime
free -h
df -h
vmstat 1 5
ps aux --sort=-%cpu | head -n 15Descrierea primește cel mult 10 000 de caractere, iar un text mai lung este tăiat fără avertisment. Nu trimiteți parole, chei private sau token-uri API.
Întrebări frecvente
Încărcarea medie este 4, iar serverul are 2 vCPU. Este grav?
Procesele așteaptă la coadă. Dacă durează puțin (o copie de rezervă, o actualizare), nu este o problemă. Dacă durează și site-ul răspunde greu, căutați procesul cu top; dacă este încărcarea obișnuită a aplicației, aveți nevoie de un plan mai mare.
free -h arată aproape 0 în coloana free. Serverul rămâne fără memorie?
Nu neapărat. Contează coloana available: memoria din buff/cache este eliberată când o cer aplicațiile.
Serverul a căzut, iar după repornire merge. Cum aflu cauza? Vedeți erorile pornirii anterioare și eventualele opriri din lipsă de memorie:
journalctl --list-boots
journalctl -b -1 -p err
journalctl -k -b -1 | grep -i "out of memory"Dacă journalctl --list-boots arată o singură pornire, jurnalul nu se păstrează după repornire. Atunci căutați mesajele în /var/log/syslog (Ubuntu, Debian) sau /var/log/messages (AlmaLinux, CentOS Stream), dacă fișierul există, și în graficele din „Monitorizare”, dacă serverul are serviciul Monitoring. Ca jurnalul să se păstreze de acum înainte, creați-i directorul permanent:
mkdir -p /var/log/journal
systemctl restart systemd-journaldComanda iostat, pidstat, sar sau htop nu există.
Instalați pachetul sysstat (pentru primele trei) sau htop, cu comenzile din secțiunile de mai sus.
Pot vedea încărcarea serverului fără SSH? În panou, doar pe pagina „Monitorizare”, pentru serverele cu serviciul Monitoring. Panoul nu arată nici dacă serverul este pornit sau oprit. Comenzile din acest ghid le poate rula pentru dvs. și un asistent AI conectat la cont: Rularea comenzilor pe server prin AI.