게임 렉 백서 › L7 서버 OS (커널)
예약 작업 Cron jobs (log rotation, backup, scans)
원인 ID so-cron · 주 담당 인프라팀·서버 인프라
그림과 실험이 있는 원본 카드로 열기 →
매일 같은 시각에 도는 로그 압축·백업·보안 검사가 CPU와 디스크를 차지합니다.
왜 정해진 시각에 OS 작업이 실행 → 그러면 CPU·디스크를 게임 서버와 나눠 씀 → 화면에서는 매일 새벽 4시처럼 정해진 시각에 뚝뚝 끊김·슬로우모션
- 증상
- 뚝뚝 끊김, 슬로우모션
- 요인
- 정체
- 누가 겪나
- 서버 전체
- 언제
- 일정한 주기로
- 담당
- 주 담당 인프라팀·서버 인프라
- 인프라팀 할 일
- 작업 시각 분산, 우선순위 낮추기(nice, ionice), 게임 서버와 분리(별도 서버에서 실행).
- 그래프에서는
- 일정 주기로 튐 · CPU 사용률, 디스크 대기열, 서버 틱 시간
- 확인할 곳
- crontab과 systemctl list-timers로 예약 작업의 실행 시각을 모으고, 틱이 튄 시각에 pidstat -u -d로 어떤 프로세스가 CPU·디스크를 쓰는지 봄
- 이러면 맞음
- 틱이 매일(또는 매시) 같은 시각에 튀고 그 시각에 예약 작업 프로세스가 CPU·디스크를 차지함
- 이러면 아님
- 튀는 시각이 매일 같은 시각과 맞지 않으면 이 원인이 아님. 몇 초·몇 분 간격으로 튀면 “서버 GC 전체 멈춤”, “타이머 동시 발동 몰림”
- 확인 수단
- 인프라 도구로 확인(게임 코드 불필요)
출처
- ionice(1) — Linux manual page util-linux
idle 클래스 작업은 다른 프로그램이 디스크를 쓰지 않을 때만 I/O를 받음 - systemd.timer(5) — Linux manual page systemd
RandomizedDelaySec로 예약 작업 시각을 무작위로 늦춰 부하 몰림을 줄임 - systemctl(1) — Linux manual page systemd
list-timers: 타이머 유닛을 다음 실행 시각 순으로 보여 줌 - pidstat(1) — Linux manual page sysstat
-u는 CPU, -d는 디스크 I/O를 프로세스별로 보여 줌
함께 보면 좋은 원인
같은 층: L7 서버 OS (커널)
같은 증상(뚝뚝 끊김)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기