मेमोरी और swap: कब ऊपर के टियर पर जाना है
सामान्य मेमोरी इस्तेमाल और कमी में फ़र्क कैसे करें, छोटे टियर पर swap क्यों ज़रूरी है, और किन संकेतों से तय करें कि ऊपर के प्लान पर शिफ्ट होना है।
23 अगस्त 2026 को अपडेट किया गया
“2 GB में से 120 MB फ़्री” नए लोगों को डराता है और Linux पर इसका कोई मतलब नहीं है: सिस्टम जानबूझकर फ़्री मेमोरी को फ़ाइल कैश के लिए इस्तेमाल करता है, क्योंकि खाली मेमोरी बेकार है। असली तस्वीर एक दूसरा कॉलम दिखाता है।
free को सही से पढ़ना
free -h
# total used free shared buff/cache available
# Mem: 1.9Gi 742Mi 102Mi 18Mi 1.1Gi 1.0Gi
# Swap: 1.0Gi 126Mi 898Mi
available को देखें — कैश हटाकर कोई एप्लिकेशन कितनी मेमोरी ले सकता है। जब तक यह वैल्यू शून्य से काफ़ी ऊपर है, मशीन ठीक है। इस मायने में free बेकार है।
चेतावनी के संकेत:
availabletotalके 10% से कम है;Swap usedबढ़ता है और खाली नहीं होता;vmstat 2मेंsi/soशून्य नहीं हैं और लगातार बने हुए हैं — सिस्टम लगातार डिस्क पर पेजिंग कर रहा है।
मेमोरी असल में क्या खा रहा है:
ps aux --sort=-%mem | head -10
smem -tk -s uss 2>/dev/null | tail -10
Swap: चाहिए या नहीं
छोटा swap किसी भी टियर पर काम आता है: यह सिस्टम को वे पेज हटाने की जगह देता है जो लंबे समय से इस्तेमाल नहीं हुए, और छोटी सी स्पाइक के दौरान किसी प्रोसेस के तुरंत मरने से बचाता है। यह मेमोरी का विकल्प नहीं है — डिस्क सैकड़ों गुना धीमी होती है।
2 GB की swap फ़ाइल बनाएँ:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
सिस्टम की swap करने की जल्दबाज़ी पर लगाम लगाएँ:
sysctl -w vm.swappiness=10
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
ध्यान रखें कि swap फ़ाइल टियर की डिस्क पर जगह लेती है (VDS-1 पर 40 GB), और उसमें लिखना डिस्क स्पीड की बैंडविड्थ खाता है, देखें डिस्क लोड।
लीक है या मेमोरी कम है
पैनल /hosting/vds/m/<id> में साप्ताहिक स्केल पर मेमोरी ग्राफ़ इन दोनों में फ़र्क करने में मदद करता है:
- आरी के दाँत — छत तक बढ़ता है, सर्विस रीस्टार्ट होने पर गिरता है, फिर बढ़ता है। यह एप्लिकेशन में लीक है; ऊँचा टियर सिर्फ़ समस्या को टाल देगा।
- शुरू से ही छत पर सपाट पठार — वर्किंग सेट के लिए जगह ही कम है।
- तेज़ गिरावट — OOM killer ने प्रोसेस को मार दिया; लेख मेमोरी खत्म देखें।
प्लान बदलने से पहले साफ़-सुथरी चीज़ों का ध्यान रखें: journal के लिए SystemMaxUse सीमित करें, डेटाबेस के लिए वाजिब लिमिट तय करें (MySQL डिफ़ॉल्ट में काफ़ी ज़्यादा माँगता है), बेकार सर्विस हटाएँ (systemctl list-units --type=service --state=running), और PHP-FPM तथा Gunicorn के वर्कर कम करें।
अपग्रेड कब करें
अगर सफ़ाई के बाद भी available हफ़्तों तक शून्य के आसपास रहता है, swap लगातार इस्तेमाल हो रहा है, और आपको पूरा एप्लिकेशन चाहिए, तो ऊँचा टियर लें। मेमोरी सीरीज़ 2, 4, 8, 16, 24, 32 GB में बढ़ती है। अपग्रेड सिर्फ़ ऊपर की ओर होता है, बचे दिनों के लिए अतिरिक्त भुगतान के साथ; डाउनग्रेड उपलब्ध नहीं है: डिस्क छोटी नहीं होती। जानकारी के लिए लेख प्लान अपग्रेड देखें।
आम गलतियाँ
- swap पूरी तरह बंद कर देना। स्पाइक के दौरान सिस्टम एक मिनट बचने के बजाय प्रोसेस को मार देगा।
- swap को डिस्क के बराबर बना देना। मशीन मरेगी नहीं, लेकिन घंटों रेंगेगी, जो तेज़ क्रैश से भी बुरा है।
- htop में
VIRTदेखना। JVM, PostgreSQL और Node का वर्चुअल साइज़ बहुत बड़ा होता है और खपत नहीं दिखाता।RESदेखें।
मेमोरी आउटेज से पहले जाँचनी चाहिए, बाद में नहीं। थ्रेशोल्ड अलर्ट सेट करें — लेख साइट डाउनटाइम अलर्ट में एक आसान तरीका है।