Configurația implicită a nucleului Linux dintr-o distribuție standard este conservatoare, gândită să funcționeze acceptabil pe orice tip de hardware (de la calculatoare vechi până la servere mici). Pentru servere de producție de mare capacitate (care rulează baze de date PostgreSQL/MySQL, cache Redis sau servere web cu zeci de mii de vizitatori concurenți), reglarea parametrilor de kernel prin sysctl oferă creșteri dramatice de stabilitate și latență.
# Aplică toate modificările cu comanda: sudo sysctl --system
# 1. OPTIMIZARE MEMORIE VIRTUALĂ (VITAL PENTRU BAZE DE DATE):
# Valoarea implicită 60 forțează mutarea paginilor de memorie pe disc (swap) mult prea devreme.
# Scăderea la 10 instruiește kernel-ul să evite folosirea swap-ului decât dacă memoria RAM este > 90% plină:
vm.swappiness = 10
# Echilibrează curățarea cache-ului de directoare/inoduri:
vm.vfs_cache_pressure = 50
# Necesar pentru Redis și baze de date cu alocare optimistă (evită erorile de fork la salvarea bazei pe disc):
vm.overcommit_memory = 1
# 2. OPTIMIZARE STIVĂ DE REȚEA TCP (PENTRU TRAFIC WEB MASIV):
# Mărește dimensiunea cozii de conexiuni în așteptare (Connection Backlog):
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# Permite reutilizarea rapidă a socket-urilor aflate în starea TIME_WAIT:
net.ipv4.tcp_tw_reuse = 1
# Activează algoritmul modern de control al congestiei dezvoltat de Google (TCP BBR):
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# 3. LIMITĂ MAXIMĂ GLOBALE DE DESCRIPTORI DE FIȘIERE:
fs.file-max = 2097152
De ce algoritmul TCP BBR este o revoluție?
Algoritmii clasici de TCP (precum Reno sau Cubic) detectează congestia prin pierderea de pachete (packet loss). Când apare o pierdere minoră de pachete pe o conexiune Wi-Fi sau mobilă, Cubic reduce viteza de transfer la jumătate! TCP BBR (Bottleneck Bandwidth and RTT) măsoară viteza reală a conexiunii și timpul de dus-întors (RTT), menținând lățimea de bandă la capacitate maximă chiar și pe conexiuni instabile, reducând latența paginilor web cu până la 30%.
Ridicarea Limitelor de Fișiere Deschise (ulimit -n)
În Linux, fiecare conexiune TCP deschisă consumă un descriptor de fișier. Limita implicită per proces este adesea de doar 1024. Dacă aveți 1025 de conexiuni web concurente, Nginx va returna eroarea 502 Bad Gateway sau Too many open files!
# Adăugați la sfârșitul fișierului pentru toți utilizatorii (*):
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
# Pentru servicii gestionate de systemd (ex: Nginx, MySQL), adăugați în fișierul unității:
# [Service]
# LimitNOFILE=65535
Întrebări & Exemple de Cod:
Ghid de Optimizare a Performanței Kernel-ului: Sysctl, Swappiness, TCP BBR și Descriptori de FișiereAi o nelămurire despre utilizarea comenzii
Ghid de Optimizare a Performanței Kernel-ului: Sysctl, Swappiness, TCP BBR și Descriptori de Fișieresau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.