คู่มือเกมแลค › L7 OS ของเซิร์ฟเวอร์ (เคอร์เนล)
งานตามกำหนดเวลา (scheduled job) Cron jobs (log rotation, backup, scans)
ID สาเหตุ so-cron · ผู้รับผิดชอบหลัก อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
งานบีบอัด log, การสำรองข้อมูล และการสแกนความปลอดภัยที่รันเวลาเดิมทุกวันจะกิน CPU และดิสก์
ทำไม งานของ OS เริ่มรันตามเวลาที่กำหนด → ผลคือ แย่ง CPU และดิสก์กับเซิร์ฟเวอร์เกม → บนหน้าจอ กระตุกและสโลว์โมชั่นในเวลาเดิม เช่น 04:00 ทุกวัน
- อาการ
- กระตุก, สโลว์โมชั่น
- ปัจจัย
- การหยุดชะงัก
- ใครเจอ
- ทั้งเซิร์ฟเวอร์
- เกิดเมื่อไร
- เป็นรอบสม่ำเสมอ
- ผู้รับผิดชอบ
- ผู้รับผิดชอบหลัก อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา)
- งานฝั่งทีมอินฟรา
- กระจายเวลาของงาน, ลดลำดับความสำคัญ (nice, ionice), แยกออกจากเซิร์ฟเวอร์เกม (รันบนเซิร์ฟเวอร์อื่น)
- บนกราฟ
- พุ่งเป็นรอบ · อัตราการใช้ CPU, คิวดิสก์, เวลาต่อทิกของเซิร์ฟเวอร์
- จุดที่ต้องดู
- เวลารันของงานตามกำหนดเวลาจาก crontab และ systemctl list-timers และโปรเซสที่ใช้ CPU และดิสก์ตอนที่ทิกพุ่งจาก pidstat -u -d
- สัญญาณว่าใช่
- ทิกพุ่งเวลาเดิมทุกวัน (หรือทุกชั่วโมง) และตอนนั้นโปรเซสของงานตามกำหนดเวลากิน CPU และดิสก์
- สัญญาณว่าไม่ใช่
- เวลาที่พุ่งไม่ตรงกับเวลาเดิมของแต่ละวัน: ไม่ใช่สาเหตุนี้ ถ้าพุ่งทุกไม่กี่วินาทีหรือไม่กี่นาที ให้ดู “GC ของเซิร์ฟเวอร์หยุดทั้งระบบ”, “ตัวจับเวลาทำงานพร้อมกันจำนวนมาก”
- วิธีตรวจ
- ใช้เครื่องมือฝั่งอินฟรา (ไม่ต้องใช้โค้ดเกม)
แหล่งอ้างอิง
- ionice(1) — Linux manual page util-linux
งานในคลาส idle จะได้ disk I/O ก็ต่อเมื่อไม่มีโปรแกรมอื่นใช้ดิสก์ - systemd.timer(5) — Linux manual page systemd
RandomizedDelaySec ใช้หน่วงเวลางานตามกำหนดเวลาแบบสุ่ม เพื่อลดโหลดที่กระจุกตัว - systemctl(1) — Linux manual page systemd
list-timers: แสดง timer unit เรียงตามเวลารันครั้งถัดไป - pidstat(1) — Linux manual page sysstat
-u แสดง CPU, -d แสดง disk I/O แยกตามโปรเซส
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: L7 OS ของเซิร์ฟเวอร์ (เคอร์เนล)
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (กระตุก)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง