שרתים קטנים נשארים בלי זיכרון ברגעים הגרועים ביותר: apt upgrade, בילד של Docker, גיבוי לילי. בלי swap, ה-OOM killer של הקרנל בוחר תהליך והורג אותו, ולעתים קרובות זה מסד הנתונים שלכם. קובץ swap הוא חגורת בטיחות זולה שנותנת לקפיצות האלה לאן ללכת. זה לוקח חמש פקודות.
1. בדקו מה יש לכם
swapon --show
free -h
אם swapon --show לא מדפיס כלום, עדיין אין swap.
2. צרו את קובץ ה-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
3. הפכו אותו לקבוע
בלי השלב הזה, ה-swap נעלם אחרי אתחול:
echo '/swapfile none swap sw 0 0' >> /etc/fstab
4. כווננו את swappiness
אמרו לקרנל להעדיף RAM ולהשתמש ב-swap בעיקר תחת לחץ:
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl --system
5. אמתו
swapon --show
free -h
אתם אמורים לראות התקן swap של 2 GB, ו-cat /proc/sys/vm/swappiness אמור להדפיס 10.
כמה גדול?
- שרת עם 1–2 GB RAM: 1–2 GB swap.
- 4 GB ומעלה: 1–2 GB עדיין מספיקים כרשת ביטחון.
אל תקבעו swap בגודל «פי שניים מה-RAM». בשרת, swap קיים כדי לספוג קפיצות קצרות, לא כדי להריץ עומסים שלא נכנסים לזיכרון.
כש-swap הוא לא התשובה
עקבו אחריו כמה ימים:
vmstat 5
העמודות si ו-so מראות דפים שנכנסים ויוצאים מה-swap בכל שנייה. פעילות מדי פעם זה בסדר. ערכים קבועים שאינם אפס אומרים שלשרת חסר זיכרון והכול מחכה לדיסק. בשלב הזה הפתרון הוא יותר RAM; ראו כמה RAM צריך VPS. ב-EQVPS אפשר לעבור לתוכנית גדולה יותר בלי התקנה מחדש; הנתונים שלכם נשארים.
תגובות
אין עדיין תגובות. היו הראשונים.