시스템 평균적인 부하를 알 수 있는 uptime
이 uptime 수치가 시스템의 CPU 코어 수(또는 쓰레드 수)보다 낮으면 시스템이 여유롭다는 의미며 높으면 CPU 자원 부족 등으로 인해 작업들이 대기하고 있어 시스템에 과부하가 걸렸을 가능성이 높습니다.
▷ Load Average
CPU가 처리해야 할 작업의 대기열 길이입니다.
- 1.0 = CPU 1개가 100% 사용 중
- 4.0 = CPU 4개가 필요한 작업량 (또는 1개 CPU가 4배 과부하)
- 일반적으로 CPU 코어 수 이하면 정상
자동처리 할때 대략 이렇게 프로그램 작성 해서 처리 하면 되며 요즘 LLM에 물어 보면 더 잘 알려 주기도 합니다.
중요한것은 주기적으로 시스템 부하를 체크 해서 내가 생각하지 못했던 쏠림 같은 것이 있어서 서비스에 문제를 일으킬 수 있는지 계속 모니터링을 해야 된다는 것입니다.
/**
* 서버 부하를 확인
*
* @param float $maxLoad 최대 허용 부하 (기본값: 2)
*
* @return float|int 정상: 5분 평균 부하값
*/
function checkServerLoad( float $maxLoad = 2.0)
{
$uptime = shell_exec('uptime');
if (!preg_match('#average:\s*([0-9.]+)#', $uptime, $aMatches)) {
return false;
}
// print_r($aMatches); exit;
$load5 = (float) $aMatches[1];
// if ($load5 <= $maxLoad) {
// return $load5;
// }
return $load5;
}
// 테스트
$result = checkServerLoad( );
요즘은 슬렉 등 메신저 무료로 보낼 수 있는 API 많이 있기 때문에 SMS 비용 내지 않고 알림을 받을 수 있는 방법이 많으니 그런 API 활용 하시면 됩니다.
