हार्डवेयर और संसाधनों का अनुकूलन
संक्षिप्त सारांश
अनुकूलन "एक चीज को तेज करने" के बारे में नहीं है, लेकिन प्रदर्शन को संतुलित करना ↔ लागत ↔ विश्वसनीयता ↔ ऊर्जा। मूल कदम: SLI/SLO और प्रोफाइल को मापना, बाधाओं को ढूंढना, "ठीक से आयाम" क्षमता, स्वचालित स्केलिंग और इमेजरी/चार्ट/नीतियों में लंगर सुधार।
लक्ष्य और सिद्धांत
UX से हार्डवेयर तक: SLO से शुरू (p95 विलंबता, संचालन की सफलता) - एक सीमित संसाधन की तलाश में।
सही आकार: लोड की प्रकृति के लिए संसाधन और उदाहरण प्रकार।
नकदी और निकटता: भंडारण और नेटवर्क के लिए "महंगी" यात्राएं कम करें।
स्वचालन: स्वचालन, जीवन चक्र नीतियां, IaC।
अवलोकन: चार-सिग्नल मैट्रिक्स, सीपीयू/एलोक प्रोफाइल, ट्रेसिंग।
सुरक्षा = प्रदर्शन: mTLS/हस्ताक्षर/सीमाएं - जहां संभव हो हार्डवेयर त्वरित।
सीपीयू और शेड्यूलिंग
कार्य: सामग्री और कैश मिस को कम करें, NUMA को ध्यान में रखें और बाधित करें।
NUMA जागरूकता: नोड्स द्वारा पिनिंग ('न्यूमैक्टल --cpunodebind--membind'), डेटाबेस/दलालों के लिए - नोड पर फिक्स करें।
IRQ/softirq: कोर (RSS/RPS) द्वारा वितरित, श्रमिकों के साथ प्रतिस्पर्धा किए बिना CPU के लिए सुरक्षित गर्म कतारें।
हाइपरफ्लो: "विलंबता संवेदनशील" के लिए - भौतिक कोर पर श्रमिकों को ठीक करें।
संदर्भ स्विच: लंबी कतारों/कसाई/असिंक्रॉन के माध्यम से कम करें।
कंपाइलर/JIT: PGO/LTO (C/C + +), ग्रेल/हॉटस्पॉट प्रोफाइल (जावा), 'GOMAXPROCS', और कार्यकर्ता आवंटन (गो) शामिल हैं।
लिनक्स ट्यूनिंग (टुकड़े) के उदाहरण: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
स्मृति और आवंटन प्रबंधन
THP/ Pages: JVM/DB के लिए - आमतौर पर THP अक्षम करें और हस्तचालित रूप से hugepages का उपयोग करें (TLB मिस कम करता है)।
NUMA संतुलन: स्टेटफुल के लिए - स्थानीय नोड के लिए प्रतिबद्ध स्मृति।
GC/allocator:- JVM: G1/ZGC, '-Xms = -Xmx' बराबर, उचित 'MaxGCPauseMillis'।
- गो: 'GOGC' (100-200 के साथ शुरू), अनावश्यक आवंटन, 'pprof' प्रोफाइल से बचें।
- पायथन: 'uvloop', 'asyncio', C-extension, कनेक्शन पूल का उपयोग करें।
- स्वैप/zswap: बिक्री पर, आमतौर पर महत्वपूर्ण सेवाओं के लिए स्वैप बंद; सामान्य-उद्देश्य नोड्स पर - "नरम" भार के लिए zswap।
भंडारण और I/O
डिस्क प्रकार: गर्म-पथ के लिए एनवीएमई, लॉग/चौकियों/टेम्पो के लिए अलग पूल।
FS: बड़ी फ़ाइलों/DB लॉग के लिए XFS; छोटे/बहुमुखी के लिए ext4।
RAID/EC: कम विलंबता के लिए, ठंडे डेटा के लिए।
I/O शेड्यूलर: NVMe के लिए 'कोई नहीं '/' mq-dement'।
Async/Batch: समूह रिकॉर्ड, राइट-बिहाइंड/ग्रुप-कमिट का उपयोग करें।
मूल्यांकन के लिए फियो (उदाहरण):bash fio --name=randread --filename=/data/test --size=20G --bs=4k \
--iodepth=64 --rw=randread --ioengine=libaio --numjobs=4 --time_based --runtime=60
नेटवर्क
MTU और ऑफलोड: डेटा सेंटर में 9000 MTU (यदि एंड-टू-एंड), GRO/LRO को सक्षम करें जहां अनुमति है।
RSS/RPS/RFS: NIC पर मल्टीचैनल कतारें, कोर द्वारा वितरण; irqbalance - नियंत्रण में।
SO_REUSEPORT: कोर में वितरित स्केलेबल सुनने योग्य सॉकेट।
क्लाइंट टाइमआउट और पुलिंग: शॉर्ट टीसीपी कीपलाइव, खुले कनेक्शन की सीमा, बैकप्रेशर।
टीएलएस: टीएलएस 1। 3, एईएस-एनआई हार्डवेयर निर्देश, सत्र फिर से शुरू, ओसीएसपी स्टेपलिंग।
नेटवर्क ट्यूनिंग (टुकड़े):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 (जहाँ उपयुक्त हो)
जीपीयू: धोखाधड़ी विरोधी निष्कर्ष, सिफारिशें, सीवी; 'यूटिल', 'मेम', 'एसएम _ दक्षता' की निगरानी करें।
SmartNIC/eBPF/DPDK: L4/L7 कर्नेल में संक्रमण के बिना ऑफलोड, फ़िल्टरिंग, टेलीमेट्री।
ऊर्जा प्रोफाइल: स्थिर विलंबता के लिए आवृत्तियों को ठीक करें आक्रामक शक्ति बचाने से बचें।
अनुप्रयोग और आरडीबीएमएस
कनेक्शन पूल: 'max _ conns' सीमित करें, कनेक्शन पूलिंग लागू करें (Pgbouncer/Hikari)।
इंडेक्स/शेड्यूलर: इंडेक्स, पार्टिशनिंग को कवर करने वाले प्रोफाइल को समझाएं/विश्लेषित करें।
कैशिंग: रेडिस/इन-प्रोसेस कैश, स्टेटिक्स के लिए सीडीएन, हॉट एपीआई के लिए एज कैश।
मूर्तिकला और कतारें: पीछे हटने के झरने से बचें, डीडअप चालू करें।
Gzip/Brotli: CPU लागत को ध्यान में रखते हुए प्रतिक्रियाओं का संपीड़न; संतुलन चुनें।
कंटेनर और कुबेरनेट्स
निवेदन/सीमाएँ - बिन-पैकिंग
अनुरोध = "गारंटी", सीमा = "छत। "सीपीयू थ्रॉटलिंग और पी 99 द्वारा गलत सीमाएं।
फट लोड (टूर्नामेंट/मैच चोटियों) पर विचार करें - p95 में मार्जिन।
बिन-पैकिंग: अलग मेजबान पूल (लेटेंसी-क्रिट, बैच, जीपीयू, स्पॉट)। टोपोलॉजी (एंटी-अफिनिटी, स्प्रेड) का उपयोग करें।
ऑटोस्कैलिंग
कस्टम मेट्रिक्स द्वारा एचपीए (CPU नहीं)।
"लंबे समय तक जीवित" और "ऑफ-पीक" श्रमिकों के लिए वीपीए।
क्लस्टर ऑटोस्केलर + व्यक्तिगत नोड समूह (ऑन-डिमांड/स्पॉट)।
घटना भार के लिए केईडीए (कतारें, काफ्का, क्रोन)।
शेड्यूलर और प्रबंधक
सीपीयू प्रबंधक: विलंबता-महत्वपूर्ण फ़ीड के लिए पूर्ण कोर पिन करने के लिए 'स्थिर'।
टोपोलॉजी प्रबंधक NUMA संरेखण।
पृष्ठ/उपकरण प्लगइन: DB/कम विलंबता और GPU/FPGA के लिए।
एचपीए का उदाहरण (विलंबता-जागरूक, मेट्रिक्स एडाप्टर के माध्यम से):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
फिनोप्स और लागत
टैरिफ प्रोफाइल: CPU/RAM/Disk/network (गणना-अनुकूलित, स्मृति-अनुकूलित, भंडारण-अनुकूलित) द्वारा उदाहरण चुनें।
स्पॉट/प्रस्तावना: मल्टी-ज़ोन अतिरेक के साथ बैच/मंचन/कैश के लिए।
आरक्षण/बचत: "स्थायी" भाग के लिए 1-3 वर्षों के लिए भंडार।
हॉट/कोल्ड: टियर-स्टोरेज, आर्काइव ऑब्जेक्ट, लॉग रिटेंशन।
निष्क्रिय संसाधन: गैर-महत्वपूर्ण वातावरण की रात/सप्ताहांत रुकती है।
ऊर्जा दक्षता (ग्रीनऑप्स)
पावर प्रोफाइल: सेवा द्वारा संतुलित प्रदर्शन बनाम।
सह-स्थान: ठंड के घंटों के दौरान संघनन, अप्रयुक्त नोड्स को बंद करना।
केपीआई: वाट प्रति अनुरोध, पी 95/वाट, CO₂ - प्रदाता मेट्रिक्स।
अवलोकन और परीक्षण
Метрики: सीपीयू चोरी/थ्रॉटल, 'साइकिल/निर्देश', एलएलसी मिस, आरएसएस/वर्किंग सेट, पेज फॉल्ट, डिस्क लैट p95/99, एनआईसी ड्रॉप्स, रेट्रांसमिट।
ट्रेसिंग: "सुनहरे रास्तों" के लिए वितरित ट्रेल्स।
प्रोफाइलिंग: eBPF/Perf/Flamegraphs, 'pprof '/YourKit/JFR।
लोड परीक्षण: एसएलओ-उन्मुख, ऑपरेशन के वास्तविक मिश्रण के साथ, एक "वार्म-अप" चरण, गलती इंजेक्शन।
PromQL (विचार):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)
अनुकूलन जाँच सूची
- एसएलओ और स्वर्ण पथ (एपीआई/भुगतान/संवितरण) परिभाषित हैं।
- CPU/alloc/IO/नेटवर्क प्रोफाइल एकत्र किए गए, शीर्ष-N अड़ चनें मिलीं।
- NUMA/IRQ/RSS विलंबता-महत्वपूर्ण नोड्स पर कॉन्फ़िगर किए गए हैं।
- THP बंद (यदि आवश्यक हो), DB/जावा सेवाओं के लिए hugepages।
- गर्म डेटा के लिए NVMe, XFS/IO-sched कॉन्फ़िगर, fio-bence की पुष्टि की।
- नेटवर्क स्टैक: MTU, RPS/RFS, SO_REUSEPORT; टाइमआउट/पूल।
- Kubernetes: अनुरोध सही, सीमाएं स्टिफ़ल नहीं करती हैं, व्यावसायिक मैट्रिक्स द्वारा HPA, VPA/CA शामिल हैं।
- "महंगे" रास्तों पर कैशिंग और सीडीएन; रेडिस/एज कैश।
- FinOps: सही आकार/भंडार/स्पॉट पूल; निष्क्रिय वातावरण को रोकना।
- सीआई में प्रदर्शन ऑटोटेस्ट, p95/p99 पर regression।
iGaming/fintech विशिष्ट
अनुसूचित चोटियाँ: टूर्नामेंट/मैच/प्रचार - मोर्चों का "लोचदार" पूल, आरपीएस/विलंबता द्वारा कैश/सीडीएन का पूर्व-वार्मिंग, एचपीए।
भुगतान और भुगतान: व्यक्तिगत "गोल्ड" आईपी/डोमेन, प्राथमिकता कतारें, संसाधन अलगाव (दर्द/सहिष्णुता), आधार आरक्षित।
एंटीबॉट/एंटीफ्राड: भारी-मॉडल - जीपीयू-श्रमिकों पर; ऑनलाइन स्कोरिंग ≤ 50 ms p95; सुविधाओं का कैश।
नियामक: अपरिवर्तनीय लॉग और एन्क्रिप्शन को एसएलओ को नहीं तोड़ ना चाहिए - हार्डवेयर त्वरण और अतुल्यकालिक पाइपलाइनों को चालू करें।
मिनी प्लेबुक
↑ रिलीज के बाद विलंबता:1. बर्न-रेट एसएलओ की जाँच करें; 2) 'cpu/alloc' प्रोफाइल; 3) रोलबैक/फीचर ध्वज; 4) प्रतिकृति/एपीआई कैश बढ़ाएं; 5) आरसीए और परीक्षण निर्धारण।
पीक लोड (मैच/टूर्नामेंट):1. सीडीएन/कैश गर्म करें; 2) लिफ्ट minReplicas; 3) फटने की सीमा शामिल है; 4) पोस्ट कतारें; 5) माध्यमिक कार्यों के लिए केवल पढ़ ने के लिए मोड सक्षम करें।
सामान्य गलतियाँ
सीपीयू "घुटन" पीक वर्कलोड → उच्च पी 99 को सीमित करता है।
अवैध नोड पूल: विलंबता-महत्वपूर्ण और बैच मिलाएं।
डेटाबेस/दलालों पर NUMA/IRQ सेटिंग की अनुपस्थिति।
एल्गोरिदम/कैश/एसक्यूएल को ठीक करने के बजाय "उपचारित लक्षण" (सीपीयू जोड़ ना)।
आरपीएस/विलंबता के बजाय सीपीयू द्वारा एचपीए देर से।
सीआई में कोई प्रदर्शन परीक्षण नहीं - प्रोड में प्रतिगमन।
कुल
अनुकूलन एक व्यवस्थित कार्य है: SLI/SLO, प्रोफाइल, फिक्स एल्गोरिदम, ट्यून हार्डवेयर (NUMA/IRQ/IO/नेटवर्क), "आकार" संसाधनों को सही और स्वचालित स्केलिंग। टेम्पलेट्स (चित्र, चार्ट, राजनीति), नियंत्रण लागत और ऊर्जा में सुधार पर कब्जा करें - और आपका मंच चरम चोटियों पर भी तेज, किफायती और टिकाऊ रहेगा।