العودة إلى المدونة

نفاد الذاكرة على Linux VPS؟ كيف تضيف ملف Swap

فريق تحرير IM Host25 أكتوبر 20263 دقائق قراءة
نفاد الذاكرة على Linux VPS؟ كيف تضيف ملف Swap

يعمل تطبيقك بشكل طبيعي لأيام، ثم تختفي قاعدة البيانات فجأة من قائمة العمليات وتجد في السجلات رسالة Out of memory: Killed process. هذا هو OOM Killer في لينكس: عندما تنفد الذاكرة ولا يجد النظام مكانًا آخر لصفحات الذاكرة، يُنهي أكبر عملية تعمل. ملف الـ Swap يعطي النظام مساحة احتياطية. لن يجعل السيرفر الصغير سريعًا، لكنه يحوّل الانهيار المفاجئ إلى بطء يمكنك ملاحظته ومعالجته.

ما هو الـ Swap وما الذي لا يفعله

الـ Swap مساحة على القرص يستخدمها النظام لتخزين صفحات الذاكرة غير المستخدمة حاليًا. على تخزين NVMe يكون أبطأ كثيرًا من الرام لكنه أسرع بكثير من الأقراص القديمة. استخدمه كشبكة أمان للارتفاعات المؤقتة مثل عملية بناء أو نسخ احتياطي أو زيادة مفاجئة في الزيارات. أما إذا كان السيرفر يستخدم الـ Swap بكثافة طوال اليوم، فالحل الحقيقي هو زيادة الرام وليس زيادة الـ Swap.

الخطوة 1: افحص الوضع الحالي

free -h
swapon --show

إذا لم يطبع الأمر swapon --show أي شيء، فالسيرفر بدون Swap. تأكد أيضًا من المساحة الفارغة بالأمر df -h / قبل المتابعة.

الخطوة 2: اختر الحجم

كقاعدة تقريبية:

  • من 1 إلى 2 جيجابايت رام: ملف Swap بحجم الرام نفسه.

  • من 4 إلى 8 جيجابايت رام: من 2 إلى 4 جيجابايت Swap تكفي عادة.

  • 16 جيجابايت رام أو أكثر: 4 جيجابايت كهامش أمان، إلا إذا نصّت وثائق برنامجك على غير ذلك.

الخطوة 3: أنشئ ملف الـ Swap وفعّله

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

خطوة chmod 600 مهمة: قد يحتوي الـ Swap على أجزاء من الذاكرة بما فيها بيانات سرية، لذا يجب ألا يقرأه إلا root. إذا لم يدعم نظام الملفات الأمر fallocate، استخدم بدلًا منه sudo dd if=/dev/zero of=/swapfile bs=1M count=2048.

الخطوة 4: اجعله دائمًا

بدون هذه الخطوة سيختفي ملف الـ Swap بعد أول إعادة تشغيل.

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

نفّذ sudo swapon --show مرة أخرى للتأكد من أنه يعمل.

الخطوة 5: اضبط قيمة Swappiness

إعداد vm.swappiness يحدد مدى سرعة نقل النظام للصفحات إلى الـ Swap. كثير من التوزيعات تستخدم القيمة 60 افتراضيًا. وفي السيرفرات التي تريد فيها استخدام الرام أولًا وترك الـ Swap للطوارئ، القيمة المنخفضة اختيار شائع:

sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf

كيف تعرف أن الـ Swap يخفي مشكلة أكبر

  • راقبه مع الوقت: الأمر vmstat 5 يعرض العمودين si وso. النشاط المتقطع طبيعي، أما التبديل المستمر فمعناه أن الذاكرة لا تكفي.

  • حدد من يستهلك الذاكرة: الأمر ps aux --sort=-%mem | head يعرض أكبر العمليات.

  • قيّد الخدمات الثقيلة: يمكن غالبًا تقليل كاش قاعدة البيانات وعدد عمليات PHP-FPM وحجم ذاكرة Node.js لتناسب السيرفر.

متى تحتاج الترقية بدلًا من ذلك

إذا كان الـ Swap مشغولًا معظم اليوم، فستتأثر سرعة الاستجابة مهما ضبطت الإعدادات. على Linux VPS من IM HOST تحصل على صلاحيات root كاملة لإعداد الـ Swap كما في الخطوات السابقة، مع تخزين NVMe وعنوان IPv4 مخصص ونطاق IPv6 بحجم /64 وحماية من هجمات DDoS، بداية من 5$ شهريًا. وعندما يكبر الحمل، تبدأ خطط Cloud VPS من 4 vCPU مخصصة و8 جيجابايت رام مع إمكانية الترقية في أي وقت.

المزيد من مدونتنا

اكتشف المزيد من الأدلة العملية ورؤى الخدمات من فريق IM Host.

عرض كل المقالات