سرورهای کوچک در بدترین لحظهها حافظه کم میآورند: یک apt upgrade، یک بیلد Docker، یک پشتیبانگیری شبانه. بدون swap، OOM killer کرنل یک پردازه را انتخاب میکند و میکشد؛ اغلب پایگاهداده شما را. فایل swap کمربند ایمنی ارزانی است که به آن جهشها جایی برای رفتن میدهد. پنج دستور لازم است.
۱. ببینید چه دارید
swapon --show
free -h
اگر swapon --show چیزی نشان ندهد، هنوز swap ندارید.
۲. فایل swap را بسازید
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
chmod 600 مهم است: swap ممکن است تکههایی از هر چیزی که در حافظه بوده، از جمله رازها، داشته باشد، پس فقط root باید بتواند آن را بخواند. اگر fallocate با پیام «operation not supported» شکست خورد، به جایش از dd استفاده کنید:
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
۳. دائمیاش کنید
بدون این مرحله، swap پس از ریبوت ناپدید میشود:
echo '/swapfile none swap sw 0 0' >> /etc/fstab
۴. swappiness را تنظیم کنید
به کرنل بگویید RAM را ترجیح دهد و عمدتاً زیر فشار از swap استفاده کند:
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl --system
۵. بررسی کنید
swapon --show
free -h
باید یک دستگاه swap دو گیگابایتی ببینید و cat /proc/sys/vm/swappiness باید عدد 10 را چاپ کند.
چقدر بزرگ باشد؟
- سرور ۱ تا ۲ گیگابایت RAM: ۱ تا ۲ گیگابایت swap.
- ۴ گیگابایت و بیشتر: ۱ تا ۲ گیگابایت همچنان به عنوان تور ایمنی کافی است.
اندازه swap را «دو برابر RAM» نگذارید. روی سرور، swap برای جذب جهشهای کوتاه است، نه اجرای کارهایی که در حافظه جا نمیشوند.
وقتی swap پاسخ نیست
چند روز زیر نظرش بگیرید:
vmstat 5
ستونهای si و so صفحاتی را نشان میدهند که در هر ثانیه از swap خوانده و در آن نوشته میشوند. فعالیت گاهبهگاه عادی است. مقادیر غیرصفر دائمی یعنی سرور کمبود حافظه دارد و همهچیز منتظر دیسک است. آن وقت راهحل RAM بیشتر است؛ یک VPS چقدر RAM لازم دارد را ببینید. در EQVPS میتوانید بدون نصب دوباره به پلن بزرگتر بروید؛ دادههایتان سر جایشان میمانند.
نظرات
هنوز نظری نیست. اولین نفر باشید.