[เกร็ดความรู้] วิธีแก้ปัญหา Killed process สำหรับ Amazon Linux บน EC2 Instance

การเกิด Killed process หลักจากรันคำสั่งที่มีผลกับระบบ Server เกิดขึ้นได้หลายสาเหตุ เช่น ทรัพยากร EC2 Instance ของเราไม่เพียงพอต่อการใช้งาน ดังนั้นในบทความนี้จะมาแนะนำวิธีแก้ปัญหาเหล่านี้จากเหตุการณ์จริงพร้อมมีคำอธิบายและขั้นตอนให้ทำตามครับ

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

เคยไหมครับเวลาที่เรารันคำสั่งใน Amazon Linux แล้วแสดงผลลัพธ์ Killed ?
ครั้งนี้เราจะมาพูดถึงปัญหาเกี่ยวกับ Killed process ที่เกิดขึ้น และแนะนำวิธีแก้ไขกันครับ

สาเหตุการเกิด Killed process

หากรันคำสั่งที่ส่งผลกับการดำเนินการของระบบ Server เช่น "yum update -y" บน Amazon Linux แล้วแสดงผลลัพท์เป็น "killed" สามารถเกิดขึ้นได้ด้วยหลายสาเหตุดังนี้:

  • Out of Memory (OOM): อาจเกิดขึ้นเมื่อ Amazon Linux มีข้อจำกัดในหน่วยความจำและไม่สามารถจัดการกับกระบวนการที่ใช้ทรัพยากรมากเกินไป ในกรณีนี้ระบบอาจ "kill" กระบวนการที่ใช้หน่วยความจำเกินเพื่อรักษาความเสถียร
  • OOM Killer: เป็นกระบวนการที่ระบบปฏิบัติการใช้เพื่อหยุดกระบวนการที่กินทรัพยากรมากเกินไปเมื่อเกิดปัญหา Out of Memory ข้อความ "killed" อาจเป็นสัญลักษณ์ว่า OOM Killer ได้ทำการ "kill" กระบวนการนั้น
  • Resource Limits: ข้อจำกัดในการใช้ทรัพยากรของ Amazon Linux เช่น CPU, หน่วยความจำ อาจจำกัดการทำงานของกระบวนการและทำให้ระบบทำการ "kill" กระบวนการที่เกินข้อจำกัดที่กำหนดไว้
  • ข้อผิดพลาดในระบบ: อาจเป็นเกี่ยวกับข้อผิดพลาดที่เกิดขึ้นใน Amazon Linux หรือระบบที่ส่งผลให้คำสั่งประเภทที่รันแล้วส่งผลกับการดำเนินการของระบบ Server ทำงานผิดพลาด ทำให้ระบบทำการ "kill" กระบวนการนี้

ตัวอย่างการเกิด Killed process

ครั้งนี้ผมใช้คำสั่ง yum update -y ทดสอบรันใน Amazon Linux 2023 AMI บน EC2 Instance ที่มีทรัพยากรไม่เพียงพอต่อการใช้งานผ่าน Session Manager และ EC2 Instance Connect
เนื่องจากคำสั่ง "yum update -y" เป็นคำสั่งที่รันแล้วส่งผลกับการดำเนินการของระบบ Server จึงนำมาทดสอบครับ

Session Manager
EC2 Instance Connect

ผลลัพธ์หลังจากลองรันคำสั่ง yum update -y ใน Session Manager และ EC2 Instance Connect แล้ว

  • สำหรับ Session Manager จะแสดงผลลัพธ์ killed
  • สำหรับ EC2 Instance Connect จะแสดงหน้าจอค้างไปทั้งอย่างนั้นเลย
Session Manager (เกิด "killed")
EC2 Instance Connect (หน้าจอค้าง)

วิธีแก้ปัญหา Killed process

การแก้ไขปัญหา "killed" ที่เกิดขึ้นจากการรัน "yum update -y" อาจต้องทำการตรวจสอบข้อมูลการใช้ทรัพยากรใน Amazon Linux เพื่อตรวจหาปัญหาที่เกิดขึ้น และอาจต้องปรับแต่งการกำหนดค่าทรัพยากรของระบบให้เหมาะสมกับการใช้งาน โดยควรทำการตรวจสอบ log หรือข้อมูลอื่นๆ เพิ่มเติมเพื่อค้นหาข้อมูลที่ช่วยในการแก้ไขปัญหาอย่างแม่นยำและป้องกันการเกิดปัญหาในอนาคต เช่น หากทรัพยากรไม่เพียงพอสำหรับการใช้งาน แล้วรันคำสั่งที่ต้องการ อาจทำให้ระบบทำการ "kill" คำสั่งที่เรารันไปอีกได้นั่นเอง

สำหรับวิธีการแก้ปัญหาที่จะมาแนะนำมีดังนี้

สร้าง Swap Memory ใน Amazon Linux

ทำการ Swap Memory เพื่อดึงพื้นที่ Storage มาสร้าง swap เพื่อทำหน้าที่เป็นหน่วยความจำเสมือน และทำให้ระบบการทำงานของ Linux Instance เร็วขึ้น

ลิงก์บทความด้านล่างนี้เป็นบทความของ Amazon Linux 2 แต่ก็สามารถเพิ่ม Swap Memory ได้ด้วยวิธีเดียวกันใน Amazon Linux 2023 ดังนั้นดูตัวอย่างที่ลิงก์นี้ได้เลยครับ

อัปเกรด Instance Type

ทำการอัปเกรด Instance Type โดยเปลี่ยนเป็นสเปคที่สูงขึ้น เช่น เปลี่ยนจาก t3a.nanot3a.micro (ตัวอย่าง)

ดูตัวอย่างได้ที่ลิงก์ด้านล่างนี้ครับ

ทดสอบรันคำสั่ง

หลังจกาทำวิธีใดวิธีนึงตามที่เขียนไว้ด้านบนนี้แล้ว ทำการทดสอบรันคำสั่ง yum update -y ใน root ตามนี้อีกครั้งครับ

คำสั่งเข้าใช้งานสิทธิ์ root

sudo su -


คำสั่ง Update ระบบให้เป็นปัจจุบัน

yum update -y

ผลลัพธ์

จะเห็นว่าสามารถรันคำสั่ง yum update -y ได้แล้ว

Session Manager
EC2 Instance Connect

สรุป

EC2 Instance เป็นบริการที่มีความยืดหยุ่น หากพบว่าทรัพยากรไม่เพียงพอต่อการใช้งาน เราสามารถปรับแต่งหรือตั้งค่าทรัพยากรของเราให้เหมาะสมกับประเภทงานที่ต้องการได้อย่างง่ายดายครับ

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

บทความที่เกี่ยวข้อง