Dəmir və resursların optimallaşdırılması
Qısa xülasə
Optimallaşdırma «bir şeyi sürətləndirmək» deyil, performans dəyərini balanslaşdırmaqdır. Əsas addımlar: SLI/SLO və profilləri ölçmək, dar yerləri tapmaq, gücləri «düzgün ölçmək», ölçməni avtomatlaşdırmaq və şəkillərdə/hit-paradlarda/siyasətlərdə təkmilləşdirmələri möhkəmləndirmək.
Məqsədlər və prinsiplər
UX-dən dəmirə: SLO-dan başlayırıq (p95 latency, əməliyyatların uğuru) → məhdudlaşdırıcı resurs axtarırıq.
Düzgün ölçüsü (rightsizing): resurslar və yükləmə xarakteri altında instansiyaların növləri.
Cache və yaxınlıq: saxlama və şəbəkələrə «bahalı» səfərləri azaltın.
Avtomatlaşdırma: autoscaling, həyat dövrü siyasəti, IaC.
Müşahidə: «dörd siqnal» metrikləri, CPU/alloc profilləri, Trace.
Təhlükəsizlik = performans: mTLS/imzalar/limitlər - hardware sürətləndirilməsi ilə mümkün olan yerdə.
CPU və planlaşdırma
Vəzifələr: kontenşensiyanı və cache səhvlərini minimuma endirmək, NUMA və fasilələri nəzərə almaq.
NUMA məlumatlılığı: düyünlər üzrə pinning ('numactl --cpunodebind --membind'), DB/brokerlər üçün - düyün üzərində fiksasiya.
IRQ/softirq: nüvələri (RSS/RPS) paylayın, CPU üçün isti növbələri məşq edənlərlə rəqabət olmadan təyin edin.
Hiper axınlılıq: «gecikməyə həssas olanlar» üçün - fiziki nüvələrə vorkeri düzəltmək.
Kontekst-switchs: Uzun növbələr/batchings/asinchron vasitəsilə azaldın.
Kompilyatorlar/JIT: PGO/LTO (C/C + +), Graal/HotSpot profilləri (Java), 'GOMAXPROCS' və worker seçimi (Go) daxil edin.
bash
IRQ affinity: bind NIC queue to specific CPU echo 2 >/ proc/irq/XX/smp_affinity # kernel mask
Softirq balance on sysctl -w net network cores. core. netdev_budget=600 sysctl -w net. core. netdev_max_backlog=5000
Yaddaş və alokasiyaların idarə edilməsi
THP/HugePages: JVM/DB üçün - adətən THP-ni söndürün və hugepages əl ilə istifadə edin (TLB səhvlərini azaldır).
NUMA balans: stateful üçün - yaddaşı lokal qovşaqda qeyd etmək.
- JVM: G1/ZGC, '-Xms = -Xmx' bərabər, ağıllı 'MaxGCPauseMillis'.
- Go: 'GOGC' (100-200 ilə başlayın), lazımsız alokasiyalardan qaçın, 'pprof' profilləri.
- Python: 'uvloop', 'asyncio', C-uzantıları, qoşulma hovuzundan istifadə edin.
- Swap/zswap: prod adətən kritik xidmətlər üçün swap off; ümumi təyinatlı qovşaqlarda - «yumşaq» yüklər üçün zswap.
Saxlama və I/O
Disk növləri: hot-path altında NVMe, log/çekapoint/temp üçün ayrı hovuzlar.
FS: Böyük fayllar/BD jurnalları üçün XFS; ext4 kiçik/universal üçün.
RAID/EC: aşağı gecikmələr üçün RAID10, soyuq məlumatlar üçün RAID6/EC.
I/O planlayıcıları: NVMe üçün 'none '/' mq-deadline'.
Async/Batch: Qeydləri qruplaşdırın, Write-Behind/Group-Commit istifadə edin.
bash fio --name=randread --filename=/data/test --size=20G --bs=4k \
--iodepth=64 --rw=randread --ioengine=libaio --numjobs=4 --time_based --runtime=60
Şəbəkə
MTU və offload: 9000 MTU datacenter (əgər end-to-end), GRO/LRO-ya icazə verildiyi yerdə daxil edin.
RSS/RPS/RFS: NIC-də çox kanallı növbələr, nüvələrin paylanması; irqbalance - nəzarət altında.
SO_REUSEPORT: nüvə paylanması ilə miqyaslı listen-soket.
Müştəri taymautları və pullinqləri: qısa TCP-keepalive, açıq konnektlərin limiti, backpressure.
TLS: TLS 1. 3, AES-NI hardware təlimatları, session resumption, OCSP stapling.
bash sysctl -w net. core. rmem_max=268435456 sysctl -w net. core. wmem_max=268435456 sysctl -w net. ipv4. tcp_rmem="4096 87380 134217728"
sysctl -w net. ipv4. tcp_wmem="4096 65536 134217728"
GPU/FPGA/SmartNIC (uyğun olduqda)
GPU: antifrod inferens, tövsiyələr, CV; 'util', 'mem', 'sm _ efficiency'.
SmartNIC/eBPF/DPDK: nüvəyə keçmədən L4/L7 boşaltma, filtrasiya, telemetriya.
Enerji profilləri: sabit gecikmə altında tezliklər qeyd; aqressiv güc qənaət qarşısını almaq.
Proqramlar və INRS
Bağlantı hovuzları: 'max _ conns' məhdudlaşdırın, connection pooling (PgBouncer/Hikari) tətbiq edin.
Indekslər/planlaşdırıcılar: indeksləri əhatə edən EXPLAIN/ANALYZE profilləri, partiyalaşdırma.
Caching: Redis/in-cache prosesi, statik üçün CDN, «isti» API üçün edge-cache.
İdempotentlik və növbələr: retraj kaskadlarından çəkinin, dedup-u yandırın.
Gzip/Brotli: CPU dəyərini nəzərə alaraq cavab sıxışdırılması; balans seçin.
Konteynerlər və Kubernetes
Requests/Limits и bin-packing
Requests = «zəmanət», Limits = «tavan». CPU → throttling və p99 ilə səhv Limits.
Burst yüklərini nəzərə alın (turnirlərin/matçların zirvələri) - p95 ehtiyatı.
Bin-packing: düyün hovuzlarını bölün (latency-crit, batch, GPU, spot). Topologiyadan (anti-affinity, spread) istifadə edin.
Avtomatik ölçmə
Xüsusi metrlərə görə HPA (RPS/p95 deyil, CPU).
«Uzunömürlü» və «qeyri-kik» işçilər üçün VPA.
Cluster Autoscaler + fərdi node qrupları (on-demand/spot).
Hadisə yükləri üçün KEDA (növbələr, Kafka, cron).
Planlaşdırıcı və menecerlər
CPU Manager: latency-kritik pod tam nüvələri pinning üçün 'static'.
Topology Manager: NUMA ilə bərabərləşdirmə.
HugePages/Device Plugins: DB/aşağı gecikmə və GPU/FPGA üçün.
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: { name: api-gw }
spec:
scaleTargetRef:
apiVersion: apps/v1 kind: Deployment name: api-gw minReplicas: 6 maxReplicas: 60 metrics:
- type: Pods pods:
metric:
name: http_latency_p95_ms target:
type: AverageValue averageValue: 120
FinOps və dəyəri
Tarif profilləri: CPU/RAM/disk/şəbəkə (compute-optimized, memory-optimized, storage-optimized) vasitəsilə instansiyaları seçin.
Spot/Preemptible: multizon artıqlığı ilə batch/staging/caches üçün.
Reservation/Savings: «daimi» hissə üçün 1-3 il üçün ehtiyatlar.
Isti/soyuq: tiered-storage, arxiv obyekt, log retenshn.
İdle-resurslar: kritik olmayan mühitlərin gecə/həftə sonu dayanması.
Enerji səmərəliliyi (GreenOps)
Power profiles: performance vs balanced services.
Birgə yerləşdirmə: «soyuq» saatlarda möhürləmə, istifadə olunmayan düyünlərin söndürülməsi.
KPI: sorğu üçün vat, p95/vat, CO ₂ -metrika provayderi.
Müşahidə və test
Метрики: CPU steal/throttle, `cycles/instructions`, LLC miss, RSS/working set, page faults, disk lat p95/99, NIC drops, retransmits.
Trace: «qızıl yollar» üçün paylanmış treys.
Profil: eBPF/Perf/Flamegraphs, 'pprof '/YourKit/JFR.
Yükləmə testləri: SLO yönümlü, real qarışıq əməliyyatlar, «qızdırma» fazası, fault-inyeksiya.
promql
CPU throttling доля sum(rate(container_cpu_cfs_throttled_seconds_total[5m])) by (pod)
/ sum(rate(container_cpu_usage_seconds_total[5m])) by (pod)
Network loss sum (rate (node_net_dropped_total[5m])) by (instance)
Optimizasiya çek siyahısı
- müəyyən SLO və «qızıl yollar» (API/ödənişlər/ödənişlər).
- CPU/alloc/IO/şəbəkə profilləri toplanmış, top-N dar yerləri tapılmışdır.
- NUMA/IRQ/RSS latency-kritik qovşaqlarda qurulmuşdur.
- THP off (lazım olduqda), DB/Java xidmətləri üçün hugepages.
- NVMe isti məlumat altında, XFS/IO-sched xüsusi, fio-bench təsdiq.
- Şəbəkə yığını: MTU, RPS/RFS, SO_REUSEPORT; taymautlar/hovuzlar.
- Kubernetes: Requests düzgün, Limits boğucu deyil, HPA biznes metrik, VPA/CA daxildir.
- «bahalı» yollarda caching və CDN; Redis/edge-cache.
- FinOps: rightsizing/ehtiyatlar/spot hovuzlar; idle-mühit dayandırılması.
- CI-də avtomatik performans testləri, p95/p99-da reqressiya.
iGaming/Fintech üçün xüsusiyyətlər
Cədvələ görə zirvələr: turnirlər/matçlar/promosyonlar → «elastik» ön hovuz, ön-qızdırma cache/CDN, RPS/gizli HPA.
Ödənişlər və ödənişlər: ayrı-ayrı «qızıl» IP/domenlər, prioritet növbələr, resursların təcrid edilməsi (taints/tolerations), baza ehtiyatı.
Antibot/antifrod: ağır modellər - GPU işçilər; 50 ms p95 ≤ onlayn hesab; cache fich.
Tənzimləyici: dəyişməz qeydlər və şifrələmə SLO-nu pozmamalıdır - avadanlıq sürətləndirmələri və asenxron paylaynları daxil edin.
Mini playbuklar
Latentlik ↑ buraxılışdan sonra:1. Burn-rate SLO-nu müqayisə edin; 2) 'cpu/alloc' profilləri; 3) geri/fichflag; 4) replikalar/API cache artırmaq; 5) RCA və test fiksasiya.
Pik yük (matç/turnir):1. CDN/cache qızdırmaq; 2) minReplicas qaldırmaq; 3) burst-limitləri daxil etmək; 4) növbələri ayırmaq; 5) ikinci dərəcəli funksiyalar üçün read-only rejimi daxil edin.
Tipik səhvlər
Limits CPU pik workloads → yüksək p99 «boğulur».
Səhv düyün hovuzu: latency-kritik və batch qarışdırın.
DB/brokerlərdə NUMA/IRQ parametrlərinin olmaması.
Alqoritmləri/cache/SQL-i düzəltmək əvəzinə «simptomları müalicə edin» (CPU əlavə edin).
HPA CPU əvəzinə RPS/latency → çox gec.
Prodda CI → regressiya performans testləri yoxdur.
Yekun
Optimallaşdırma sistemli bir işdir: SLI/SLO ölçün, profil edin, alqoritmləri düzəldin, dəmir (NUMA/IRQ/IO/şəbəkə), resursları «düzgün ölçün» və ölçü avtomatlaşdırın. Şablonlarda (şəkillər, qrafiklər, siyasətlər) təkmilləşdirmələri təmin edin, xərcləri və enerjini idarə edin - platformanız hətta ekstremal zirvələrdə də sürətli, qənaətli və davamlı olaraq qalacaq.