Skip to content
VDS · المراقبة والأداء

الذاكرة و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.

عليك بفحص الذاكرة قبل الانقطاع، لا بعده. اضبط تنبيهات العتبات — وهناك وصفة بسيطة في مقالة تنبيهات توقف الموقع.