سرور مجازی با رم 1 یا 2 گیگابایت؛ کدام مناسب است؟
تفاوت بین 1 و 2 گیگابایت حافظه در عمل بزرگتر از چیزی است که عدد نشان میدهد. این مقاله میگوید هرکدام چه چیزی را جا میدهند و از کجا بفهمید حافظه کم آوردهاید.
تفاوت بین 1 و 2 گیگابایت روی کاغذ دو برابر است. در عمل بزرگتر از این است، چون بخش ثابتی از حافظه را سیستمعامل برمیدارد و آنچه برای شما میماند نسبت خیلی نابرابرتری دارد. این مقاله کمک میکند با معیار روشن، نه حدس، بین این دو انتخاب کنید. اگر هنوز با خود مفهوم منابع اختصاصی در سرور مجازی آشنا نیستید، سرور مجازی چیست را ببینید.
حداقلهای رسمی، نقطه شروع
قبل از حساب کردن نیاز برنامهتان، ببینید خود سیستمعامل چه میگوید:
- اوبونتو سرور 24.04: طبق صفحه نیازمندیهای رسمی، حداقل حافظه برای تصویر ابری (همان چیزی که روی سرورهای مجازی نصب میشود) 1 گیگابایت و برای نصب از ISO، 1.5 گیگابایت است. همان صفحه برای راهاندازیهای پیچیدهتر 3 گیگابایت یا بیشتر را پیشنهاد میکند.
- ویندوز سرور: طبق مستندات مایکروسافت، نسخه با محیط گرافیکی دستکم 2 گیگابایت حافظه میخواهد و برای ویندوز سرور 2025 مقدار 4 گیگابایت پیشنهاد شده است.
یعنی 1 گیگابایت برای لینوکس «حداقل» است، نه «راحت»؛ و برای ویندوز اصلاً گزینه نیست.
چه چیزی حافظه را مصرف میکند؟
روی یک لینوکس سرور بدون محیط گرافیکی، خود سیستمعامل سهم نسبتاً کوچکی برمیدارد. بقیه بین سرویسهای شما تقسیم میشود و مصرفکنندههای اصلی معمولاً اینها هستند:
- پایگاه داده — بیشترین مصرفکننده در اغلب پروژهها. حافظه را برای کش میگیرد و هرچه بدهید مصرف میکند.
- مفسر زبان برنامهنویسی — هر پردازه PHP یا پایتون یا Node.js سهم خودش را دارد و تعداد پردازهها ضرب میشود.
- وبسرور — معمولاً سبک است.
- کانتینرها — اگر با Docker کار میکنید، هر کانتینر پردازههای خودش را دارد و مصرفشان جمع میشود.
با 1 گیگابایت چه کاری میشود کرد؟
مناسب است برای:
- یک وبسایت ایستا یا کمبازدید
- یک سرویس پسزمینه سبک که همیشه روشن است، مثل یک ربات تلگرام ساده
- یک محیط یادگیری و آزمایش
- یک واسط برنامهنویسی کوچک با ترافیک کم
مناسب نیست برای ویندوز سرور، پایگاه دادهای که واقعاً کار میکند، یا هر سرویسی که چند پردازه همزمان بالا میآورد.
با 2 گیگابایت چه فرقی میکند؟
فضای تنفس. همان کارهای بالا، بهعلاوه یک پایگاه داده کوچک در کنارش، بدون اینکه هر افزایش ناگهانی ترافیک سرویس را از پا در بیاورد.
اگر پروژهتان وبسایت با پایگاه داده است، 2 گیگابایت نقطه شروع واقعبینانهتری است. همینطور اگر روی خود سرور کد را میسازید (مثلاً npm install یا کامپایل یک پروژه بزرگ)، این مراحل در لحظه حافظه زیادی میگیرند و روی 1 گیگابایت ممکن است نیمهکاره متوقف شوند.
مصرف واقعی را اندازه بگیرید، نه حدس بزنید
بهترین راه انتخاب، دیدن مصرف واقعی است — مثلاً اجرای پروژه روی یک ماشین آزمایشی یا سرور فعلی. سه دستور کافی است.
وضعیت کلی حافظه:
free -h
در خروجی به ستون available نگاه کنید، نه free. لینوکس حافظه بلااستفاده را برای کش دیسک (buff/cache) به کار میگیرد و هر وقت برنامهای لازم داشته باشد آزادش میکند؛ پس عدد کوچک free بهتنهایی نشانه کمبود نیست. عدد available تخمین حافظهای است که برنامههای جدید بدون استفاده از swap میتوانند بگیرند.
چه کسی بیشترین حافظه را گرفته:
ps aux --sort=-%mem | head -10
ستون RSS حافظه واقعی هر پردازه را بر حسب کیلوبایت نشان میدهد. مصرف پردازههای اصلی پروژهتان را در ساعت شلوغی جمع بزنید و حاشیهای برای سیستمعامل و افزایش ناگهانی ترافیک به آن اضافه کنید.
از کجا بفهمم حافظه کم آوردهام؟
نشانهها معمولاً غیرمستقیماند و بهسادگی با «کندی سرور» اشتباه گرفته میشوند:
- سرویسها بدون پیام روشنی متوقف میشوند و دوباره بالا میآیند
- پایگاه داده گاهی اتصال را رد میکند
- سرور در اوج مصرف کند میشود و بعد به حالت عادی برمیگردد
اگر سیستم به دلیل کمبود حافظه پردازهای را کشته باشد، در لاگ هسته ثبت شده است:
journalctl -k | grep -i "out of memory"
خطی شبیه Out of memory: Killed process ... (python3) یعنی هسته برای نجات سیستم، آن پردازه را قربانی کرده است.
فایل swap چقدر کمک میکند؟
فضای swap بخشی از دیسک است که وقتی حافظه پر شود بهعنوان حافظه استفاده میشود. جلوی از کار افتادن ناگهانی را میگیرد، اما دیسک بهمراتب از حافظه کندتر است؛ سرویسی که مدام روی swap کار میکند، کار میکند ولی کند است.
ببینید swap دارید یا نه:
swapon --show
اگر خروجی خالی بود، طبق راهنمای swap اوبونتو یک فایل 1 گیگابایتی اینطور ساخته میشود:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
برای اینکه بعد از راهاندازی مجدد هم فعال بماند، این خط را به انتهای فایل /etc/fstab اضافه کنید:
/swapfile swap swap defaults 0 0
مقدار swappiness تعیین میکند هسته چقدر زود سراغ swap برود؛ پیشفرض اوبونتو 60 است و با cat /proc/sys/vm/swappiness دیده میشود. روی سرور کمحافظه، swap را همینطور نگه دارید و اول مصرف واقعی را بسنجید.
swap یک شبکه ایمنی است، نه جایگزین حافظه. اگر سرور شما دائم روی آن تکیه کرده، پاسخ درست حافظه بیشتر است. یادتان باشد فایل swap از فضای دیسک برمیدارد؛ روی پلنی با دیسک کوچک، این را هم حساب کنید.
قبل از ارتقا، مصرف را کم کنید
گاهی مشکل مقدار حافظه نیست، تنظیم پیشفرض برنامههاست:
- تعداد پردازهها: وبسرورها و مفسرها معمولاً چند پردازه موازی بالا میآورند. روی سرور کوچک، تعداد را متناسب با حافظه پایین بیاورید.
- کش پایگاه داده: اندازه کشی را که پایگاه داده برای خودش برمیدارد با حافظه واقعی سرور تنظیم کنید، نه با پیشفرضهایی که برای سرورهای بزرگتر نوشته شدهاند.
- سرویسهای اضافه: هر سرویسی را که نصب شده و لازم ندارید، خاموش کنید.
یک روش ساده برای تصمیم
- فهرست سرویسهایی را که روی سرور اجرا میشوند بنویسید: وبسرور، پایگاه داده، برنامه، ربات، کانتینرها.
- اگر پروژه جایی در حال اجراست، مصرف هرکدام را با
psدر ساعت شلوغی ببینید؛ اگر نیست، روی یک ماشین آزمایشی اجرایش کنید. - مجموع را با حاشیهای برای سیستمعامل و افزایش ناگهانی بار مقایسه کنید.
- اگر مجموع به 1 گیگابایت نزدیک است یا پایگاه داده در کار است، 2 گیگابایت را انتخاب کنید.
- بعد از راهاندازی، یکی دو هفته
free -hو لاگ هسته را زیر نظر بگیرید.
و اگر اشتباه انتخاب کنم؟
منابع هر سرور برای تمام دوره ثابت است. برای رفتن به پیکربندی بزرگتر یک سفارش تازه ثبت میکنید و اطلاعات را خودتان منتقل میکنید. به همین دلیل، اگر بین دو اندازه مردد هستید و کاری که میکنید اهمیت دارد، اندازه بزرگتر معمولاً از هزینه انتقال بعدی کمتر تمام میشود.
از طرف دیگر، اگر فقط میخواهید یاد بگیرید یا چیزی را آزمایش کنید، کوچکترین پلن کاملاً کافی است.
خلاصه
| 1 گیگابایت | 2 گیگابایت | |
|---|---|---|
| وبسایت ایستا | کافی | کافی |
| وبسایت با پایگاه داده | تنگ | نقطه شروع منطقی |
| سرویس پسزمینه سبک یا ربات | کافی | کافی |
| چند کانتینر Docker | تنگ | بسته به کانتینرها |
| ساخت و کامپایل روی سرور | ریسکی | معمولاً کافی |
| محیط یادگیری | کافی | کافی |
| ویندوز سرور | کافی نیست | حداقل رسمی؛ در عمل تنگ |
مشخصات و قیمت همه پلنها — حافظه، پردازنده، فضا و موقعیت — روی کارت هر پلن در خرید سرور مجازی نوشته شده است. راهنمای کامل انتخاب مشخصات هم در راهنمای خرید سرور مجازی است.