วิธีแก้ spamd high CPU usage

คิดว่าปัญหานี้หลายคนคงเจอ. โดยเฉพาะบริการ web hosting ที่ลูกค้าส่งเมล์กันมากมายก่ายกอง. วันนี้จะเสนอวิธีแก้ปัญหา spamd ใช้ cpu 100% และทำให้ load average พุ่งสูงแบบง่าย ๆครับ.

วิธีไม่มีอะไรมากคือจะ set nice level ให้จากเดิม 0 เป็น 5

vi /etc/init.d/spamassassin

หา code

daemon $NICELEVEL spamd $SPAMDOPTIONS -r $SPAMD_PID

แก้เป็น

daemon nice -n 5 spamd $SPAMDOPTIONS -r $SPAMD_PID

จากนั้นสั่ง restart spamd

/etc/init.d/spamassassin restart

เป็นอันเสร็จพิธี.

รูปประกอบ

มันคืออะไรครับ หลายๆคนคงอยากทราบ แฮะๆ

http://spamassassin.apache.org/

ระบบกรอง spam ที่ติดตั้งได้ง่ายบน directadmin

อ่าผมหมายถึงที่ตั้งค่า อ่ะครับว่ามันหมายถึงอะไร

คือ การกำหนด nice level บน linux ให้กับ service ครับ ซึ่งมีตั้งแต่

-19 ไป 19 (ไม่แน่ใจว่าไปถึง 20 แล้วรึยัง)

ปัญหาของ spamd จะพบเวลาลูกค้าเริ่มเยอะ โดยเฉพาะเน้น การ รับ ส่ง เมล์.

ถ้าเป็นเฝ้าหน้า top แบบผมจะเห็น spamd ทำ cpu 100% อยู่บ่อย ๆ ครับ.

ดังนั้นจึงเพิ่มคำสั่งให้ ให้ spamd ทำงานใน priority ที่ต่ำลง ในที่นี้คือ -5

[edit by admin: ควรแก้ไข -5 เป็น +5 กรณีต้องการให้ priority ต่ำลงครับ]

กระจ่างเลย ว่าแต่มันจะส่งผลกระทบอะไรกับ spamd มั้ยหว่า

มีอะไรดีๆ มาฝากอีกแล้ว ขอบคุณมากๆ ครับ

มันเหมือนกำหนดว่า spamd จะใช้ cpu ได้สูงสุดไม่เกินเท่าไหร่น่ะครับ. ถ้าเป็น server ที่มีการรับส่งเมล์ไม่มาก แทบไม่เห็นความแตกต่าง. แต่ถ้า server ส่งเมล์กันเยอะ ก็จะช่วยควบคุมการใช้ cpu ของ spamd ซึ่งนั่นก็จะทำให้มันทำงานได้ช้าลงนิดหน่อย.

คีย์ “spamd high cpu” เป็นคีย์ที่ค้นเยอะเหมือนกันบน google. ลองหาเพิ่มเติมดูครับ

Nice ใช้กำหนดความสำคัญของโปรแกรมที่จะให้ใช้งาน CPU ครับ (Priority) ว่าถ้าตัวไหนมี Nice ต่ำกว่า ก็จะให้ทำงานไปก่อนครับ (-20 จะมีความสำคัญสูงสุด) แต่แปลกที่ว่ากำหนดจาก 0 ให้เป็น -5 ก็จะทำให้ Spamd มีความสำคัญมากขึ้นไปอีก กลายเป็น Services ตัวอื่นจะต้องหยุดให้ Spamd ทำงานไปก่อนนะครับ ที่ว่าช่วยนี่ กลายเป็นทำให้ Services อื่นๆช้าไปแทนหรือเปล่าครับ?

A niceness of −20 is the highest priority and 19 or 20 is the lowest priority.

ขอบคุณครับ เมื่อคืนมึนไปหน่อย.

ผมได้แก้ไข code ที่ /etc/init.d/spamassassin แทนการแก้จาก /etc/sysconfig/spamassassin

แนบรูปประกอบให้แล้ว