الذاكرة وswap: متى يحين وقت مستوى أعلى
كيف تميّز بين الاستخدام الطبيعي للذاكرة ونقصها، ولماذا تحتاج إلى swap على مستوى صغير، وبأي علامات تقرر الانتقال إلى خطة أعلى.
آخر تحديث 23 أغسطس 2026
«120 ميغابايت متاحة من أصل 2 غيغابايت» تخيف القادمين الجدد ولا تعني شيئًا على 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 بهذا المعنى فلا فائدة منها.
علامات التحذير:
availableأقل من 10% منtotal؛Swap usedتنمو ولا تُحرَّر؛- في
vmstat 2تكونsi/soغير صفرية وثابتة — أي أن النظام يبادل الصفحات إلى القرص باستمرار.
ما الذي يستهلك الذاكرة بالضبط:
ps aux --sort=-%mem | head -10
smem -tk -s uss 2>/dev/null | tail -10
Swap: هل نحتاجها أم لا
قليل من Swap مفيد في أي مستوى: فهو يمنح النظام مساحة لنقل الصفحات التي لم تُستخدم منذ وقت طويل، ويحمي من موت عملية فورًا أثناء ارتفاع قصير. لكنه ليس بديلًا عن الذاكرة — فالقرص أبطأ بمئات المرات.
أنشئ ملف Swap بحجم 2 غيغابايت:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
اكبح ميل النظام المفرط إلى المبادلة:
sysctl -w vm.swappiness=10
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
ضع في الحسبان أن ملف Swap يشغل مساحة على قرص المستوى (40 غيغابايت على VDS-1)، وأن الكتابة إليه تستهلك عرض سرعة القرص، انظر حمل القرص.
تسريب أم ذاكرة غير كافية
يساعد مخطط الذاكرة في لوحة التحكم /hosting/vds/m/<id> على مقياس أسبوعي في التمييز بين الحالتين:
- منشار مسنن — ينمو حتى السقف، وينخفض عند إعادة تشغيل الخدمة، ثم ينمو من جديد. هذا تسريب في التطبيق؛ والمستوى الأعلى لن يؤجل المشكلة إلا قليلًا.
- هضبة مستوية عند السقف منذ البداية — ببساطة لا توجد مساحة كافية لمجموعة العمل.
- انخفاض حاد — قاتل OOM أنهى العملية؛ انظر مقالة نفاد الذاكرة.
قبل تغيير الخطة، اعتنِ بالواضح: حدّد SystemMaxUse للسجل، وضع حدودًا معقولة لقاعدة البيانات (MySQL تطلب الكثير افتراضيًا)، وأزل الخدمات غير المستخدمة (systemctl list-units --type=service --state=running)، وقلّل عدد العمال في PHP-FPM وGunicorn.
متى تُرقّي
إذا بقيت available قرب الصفر لأسابيع بعد التنظيف، وكان Swap قيد الاستخدام باستمرار، وكنت تحتاج التطبيق ككل، فاختر مستوى أعلى. تزداد الذاكرة عبر السلسلة 2، 4، 8، 16، 24، 32 غيغابايت. والترقية تكون للأعلى فقط، مع دفع إضافي عن الأيام المتبقية؛ أما التخفيض فغير متاح: فالقرص لا يتقلص. للتفاصيل، انظر مقالة ترقية الخطة.
أخطاء شائعة
- تعطيل Swap تمامًا. أثناء ارتفاع مفاجئ سينهي النظام العملية بدلًا من الصمود دقيقة.
- جعل Swap بحجم القرص. لن يموت الجهاز، لكنه سيزحف لساعات، وهذا أسوأ من انهيار سريع.
- النظر إلى
VIRTفي htop. الحجم الظاهري في JVM وPostgreSQL وNode ضخم ولا يعكس الاستهلاك. انظر إلىRES.
عليك بفحص الذاكرة قبل الانقطاع، لا بعده. اضبط تنبيهات العتبات — وهناك وصفة بسيطة في مقالة تنبيهات توقف الموقع.