Segmentation Fault คืออะไร

Running Server อยู่หลายเดือนไม่มีปัญหา แต่อยู่ดีๆก็มีปัญหาขึ้นมา ปัญหาคือ
1.PHP Script ที่มีการใช้คำสั่ง curl จะมีปัญหาได้ 500 ทั้งหมด
2.ทดลองคำสั่ง curl ใน linux ได้ Segmentation Fault
3.ทดลองคำสั่ง yum install curl ได้ Segmentation Fault
และอีกหลายๆคำสั่ง

จากหลายๆที่อธิบาย Segmentation Fault หมายถึง Application มีการใช้งาน Memory อย่างไม่ถูกต้อง (Segfaults are caused by a program trying to read or write an illegal memory location.) ซึ่งผมก็หาทางแก้ทุกวิธี ทั้งเช็ค memory , swapfile ว่ามีเหลือเยอะอยู่หรือไม่ ด้วยคำสั่ง free -h และ clear page cache memory ด้วยคำสั่ง # sync; echo 1 > /proc/sys/vm/drop_caches. และยัง disable opcache ออกเพราะคิดว่าเป็นสาเหตุที่ใช้ memory ก็ยังไม่หาย

เหตุการณ์นี้ไปตรวจพบว่า มีคนยิงเว็บเราจากการดู Graph CPU , Disk Usage ขึ้นไป 60-70% และใช้คำสั่ง top ดู เลยไปหาที่มาจากการ tail error_log ใน apache ดู ก็พบว่า มี IP เดิมๆ ยิงเว็บเราอยู่ จึงทำการ block ip เหล่านั้นด้วยไฟล์ .htaccess หลังจากนั้น CPU ก็ลงไปที่เดิม

แต่ปัญหา Segmentation Fault ก็ยังไม่หาย และบางคำสั่งยังขึ้น Error Freeing read locks for locker อีกด้วยซึ่งเกี่ยวกับ memory address เช่นกัน สุดท้ายแก้ไม่ได้ ก็เลยลอง restart server ปรากฏว่าหาย สรุปสาเหตุมาจากการรับ Traffic ไม่ไหว จึงนำปัญหานี้มาแชร์ให้ฟังครับ

reference1 : https://kb.iu.edu/d/aqsj
reference2 : https://stackoverflow.com/questions/3200526/what-is-a-segmentation-fault-on-linux

Related posts:

This entry was posted in centos6, knowledge. Bookmark the permalink.