Projektowanie stron internetowych i usługi IT

|

Każdy system potrzebuje swojego

POLIGON'u

Optymalizacja wydajności serwerów Linux

Kompletny przewodnik – od monitoringu po high-availability

1. Wstęp

Linux stanowi dziś fundament zdecydowanej większości nowoczesnych środowisk serwerowych – od pojedynczych maszyn VPS, przez klastry kontenerowe, aż po hiperskalowe chmury obsługujące miliony zapytań na sekundę. Jego modularna architektura i bogaty ekosystem narzędzi pozwalają precyzyjnie dostroić każdy element stosu – od kolejkowania pakietów sieciowych w jądrze, przez algorytmy I/O i cash-stery pamięci, aż po schedulery procesora. Jeśli tę elastyczność połączymy z ciągłym pomiarem metryk (Prometheus, Zabbix, eBPF, perf), zyskujemy możliwość błyskawicznego wykrywania wąskich gardeł i wdrażania korekt zanim wydajność zacznie spadać. W rezultacie podnosimy przepustowość usług, skracamy czasy odpowiedzi, a jednocześnie obniżamy koszty operacyjne – bo dobrze skalibrowany serwer wykonuje tę samą pracę przy mniejszym zużyciu CPU, pamięci i energii, co bezpośrednio przekłada się na niższe rachunki za infrastrukturę i mniej awaryjny system produkcyjny.

2. Monitoring zasobów

Bez rzetelnego monitoringu optymalizacja to błądzenie we mgle. Zabbix, Prometheus + Grafana albo Netdata dostarczą szczegółowych metryk CPU, pamięci, I/O, sieci i aplikacji.

  • Alerty progowe (CPU > 85 %, latency > 200 ms).
  • Dashboardy SLA – 4xx/5xx per endpoint.
  • Eksportery Prometheus do MySQL, NGINX i Traefik.
# instalacja node_exporter w systemd
sudo useradd --no-create-home --shell /usr/sbin/nologin nodeusr
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.0/node_exporter-1.8.0.linux-amd64.tar.gz
tar -xzf node_exporter-1.8.0.linux-amd64.tar.gz
sudo cp node_exporter-1.8.0.linux-amd64/node_exporter /usr/local/bin
cat >/etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Prometheus Node Exporter
[Service]
User=nodeusr
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now node_exporter
Przykład dashboardu monitoringu

3. Optymalizacja kernel i parametrów sieci

Drobne zmiany w sysctl potrafią obniżyć latencję nawet o 30 %. Kluczowe parametry:

  • net.core.somaxconn – maksymalna długość kolejki SYN,
  • net.ipv4.tcp_fin_timeout – czas FIN-WAIT-2,
  • vm.swappiness – agresywność swapu.
# /etc/sysctl.d/99-performance.conf
net.core.somaxconn       = 4096
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_tw_reuse    = 1
net.ipv4.tcp_fin_timeout = 15
vm.swappiness            = 10
# zastosuj:
sudo sysctl --system
Pytanie 1: co to jest sysctl?

To interfejs do runtime’owej zmiany parametrów jądra zapisanych w /proc/sys. Modyfikacje w /etc/sysctl.d/*.conf są trwałe po reboocie.

4. Caching i reverse proxy

Warstwa cache odciąża backend i zmniejsza TTFB. Popularne rozwiązania:

  • Varnish HTTP Cache – dla stron www o dużym ruchu,
  • Redis – cache obiektów / sesji,
  • Nginx / HAProxy – SSL-offload + LB.
# /etc/varnish/default.vcl – skraca TTL statycznych zasobów
sub vcl_backend_response {
  if (bereq.url ~ "\.(png|jpg|css|js)$") {
    set beresp.ttl = 2h;
  } else {
    set beresp.ttl = 60s;
  }
}

5. Zarządzanie I/O i storage

Przy dyskach NVMe warto użyć kolejek I/O none, natomiast w RAID-ach SATA/SAS dobrze sprawdza się mq-deadline. Zadbaj o TRIM i prawidłowe alignment.

# scheduler on-the-fly:
echo none | sudo tee /sys/block/nvme0n1/queue/scheduler
# fstrim weekly
sudo systemctl enable fstrim.timer

6. Load balancing i wysoka dostępność

Skalowanie horyzontalne wymaga balancera L4/L7 i mechanizmu HA. Przykład zestawu: Keepalived + HAProxy.

# /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
  state MASTER
  interface ens192
  virtual_router_id 51
  priority 150
  advert_int 1
  virtual_ipaddress {
    10.0.0.10
  }
}

7. Bezpieczeństwo i hardening

Wysoka wydajność nie zwalnia z dbania o bezpieczeństwo – wręcz przeciwnie, DDoS potrafi w sekundy zjeść zasoby.

  • nf_conntrack_max podnieś do wartości (RAM / 32) ≈ milionów,
  • firewalld / nftables – ratelimit ICMP/SSH,
  • SSH MaxStartups i LoginGraceTime.

8. Automatyzacja i CI/CD

Manualne wprowadzanie zmian to gwarantowany configuration drift. Narzędzia takie jak Ansible, Terraform czy GitLab CI pozwolą zachować identyczny stan środowisk DEV/TEST/PROD.

# playbook.yml – rozdzielna rola ‘sysctl’
- hosts: all
  become: yes
  roles:
    - role: hardening
    - role: sysctl_tuning

9. Podsumowanie

Optymalizacja to proces iteracyjny: mierz → analizuj → wdrażaj poprawki → waliduj. Dzięki opisanym technikom Twoje usługi będą stabilne, wydajne i przygotowane na nagłe piki ruchu.

Partnerzy strategiczni

wpisz help
Terminal
$