Monday, January 17, 2011

จำกัดโปรแกรมต่างๆไม่ให้กิน RAM หมด (สำหรับVPS)

*บทความนี้เกิดจากประสบการณ์ในการใช้ VPS ซึ่งค้นหาจากหลายๆแหล่ง ไม่ได้แปลมาจากบทความใดโดยตรง
หากพบข้อผิดพลาดขออภัย ณ ที่นี่ด้วยและสามารถ Reply ได้เลยนะครับ


หลายท่านที่ใช้ VPS อยู่ โดยเฉพาะจำพวก OpenVZ,Virtuozzo,.. ต่างๆ
อาจจะเจอปัญหาที่ว่าเวลาใช้งานไปสักพักนึง Service ต่างๆจะกิน RAM มากขึ้น
เรื่อยๆจนกระทั่งเต็ม แล้ว OpenVZ ทำการ Kill Process ใหม่ๆทำให้เกิดปัญหามากมาย
ซึ่งสาเหตุเกิดจากที่หากใช้ VPS จำพวก OpenVZ ใน VPS ของเราจะเห็น RAM ทั้งระบบ
แล้วโดยธรรมชาติของโปรแกรมใน Linux นั้นจะพยายามใช้ Memory ให้หมด
ซึ่งจริงๆแล้วไม่สามารถใช้ได้ตามนั้น

วิธีแก้ปัญหาก็คือ Limit Memory ของ Services ต่างๆ (แบ่ง Memory เอง)
โดยสามารถแก้ไขไฟล์ Configได้ดังนี้
(Path ของไฟล์อาจไม่เหมือนในนี้ หากไม่เจอให้ลองใช้คำสั่ง slocate หาดู)

Apache/HTTPD (/etc/httpd/conf/httpd.conf) :

Quote
RLimitMem <Bytes>


ProFTPD (/etc/proftpd.conf) :
Quote
RLimitMemory daemon <Bytes>


BIND (/etc/named.conf)  : << ถ้ามี option อยู่แล้วไม่ต้องใส่ซ้ำ
Quote
option {
    max-cache-size <Bytes> ;
};


Squid (/etc/squid/squid.conf) :
Quote
cache_mem <Bytes>


MySQL (/etc/my.conf) :
<Config ไม่ได้โดยตรง ต้องใช้เครื่องมืออื่นช่วย ซึ่งจะอธิบายต่อไปภายหลัง>

โอกาสหน้าจะมาเพิ่มอีกนะครับ

โดยสามารถแก้ไขไฟล์ Configได้ดังนี้
(Path ของไฟล์อาจไม่เหมือนในนี้ หากไม่เจอให้ลองใช้คำสั่ง slocate หาดู)

Quote
Apache/HTTPD (/usr/local/etc/apache22/httpd.conf) :
    RLimitMem <Bytes>


Quote
ProFTPD (/usr/local/etc/apache22/proftpd.conf) :
    RLimitMemory daemon <Bytes>


Quote
BIND (/etc/namedb/named.conf)  : << ถ้ามี option อยู่แล้วไม่ต้องใส่ซ้ำ
    option {
         max-cache-size <Bytes> ;
    };



Quote
Squid (/usr/local/etc/squid/squid.conf) :
    cache_mem <Bytes>

0 comments:

Post a Comment

 
Design by GURU