문제

CPU 및 MySQL 리소스를 많이 사용하는 청소를하는 Cron 작업을 실행하고 싶습니다. 서버가 비교적 바쁘지 않은 경우에만 실행되기를 원합니다.

PHP에서 결정하는 가장 간단한 방법은 무엇입니까? (예를 들어, 마지막 순간에 몇 개의 쿼리 수를 반환하는 쿼리가 있습니까? ...)

도움이 되었습니까?

해결책

if (function_exists('sys_getloadavg')) {
    $load = sys_getloadavg();
    if ($load[0] > 80) {
       header('HTTP/1.1 503 Too busy, try again later');
       die('Server too busy. Please try again later.');
    }
}

이 기능을 필요에 맞게 업데이트하십시오

다른 팁

Linux에서는로드 할 수 있습니다 /proc/loadavg 파일.

$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]

이것이 유닉스 시스템 인 경우 uptime. 이것은 일반적으로 "바쁜"의 좋은 척도로 간주되는 CPU 하중을 보여줍니다. 근처 또는 그 이상 1.0 "완전히 바쁘다"는 것을 의미합니다.

해당 출력에는 3 개의 CPU "로드"시간이 있으며 부하 평균 1, 5 및 15 분 이상을 제공합니다. 스크립트에 적합한 것을 선택하십시오. "로드"의 정의 여기에.

아마도 정보를 사용할 수 있습니다 MySQL 목록 프로세스 DB의 부하에 대한 괜찮은 지표 인 Active vs. Sleep가 얼마나 많은지 확인하는 기능.

Linux에 있다면 사용할 수 있습니다 sys getloadavg 기능 전체 시스템로드를 볼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top