2009-11-30 2 views
2

업데이트 : 모든 답변 덕분에,하지만 그들은 모두 아파치가 아니라 시스템 부하에 관한 것입니다.PHP로 아파치의 부하를 모니터링

나의 목표는 아파치가 높은 부하를 갖고 lighttpd에서 약간의 트래픽을 포크로 찍을 수 있다는 것을 이해하는 나의 PHP 스크립트 (templating 것들)를 이해하는 것이다. 이것은 단지 긴 폴링과 아파치 하중.

안녕 얘들 아, this question 후 내가 요청 이런 종류의 forn 아파치와 데이터베이스를 핵무기하지 않도록하기 위해, 내 서버에 긴 폴링 서비스 lighttpd를 사용하기 시작했습니다.

그런 다음 정적 콘텐츠 (이미지, CSS, js 등)에도 lighttpd를 사용하기 시작했습니다.

사실, example.com은 apache에서 제공하고 polling.example.com은 lighttpd에서 제공합니다. 둘 다 memcache를 사용하여 데이터베이스 적중률을 줄입니다.

아파치에서 내가 할 수있는 방법이 있다면 메신저 궁금 지금 polling.example.com/*

에 example.com/polling/*하는 모든 요청에서 프록시 프록시 모듈을 설정 한 아파치가 높은로드를 가진다면 lighttpd에 대한 다른 아약스 요청을 리다이렉트하기 위해 PHP에서 아파치 서버로드를 가져온다.

내 말은, 뭔가 같은 : 데비안

에서 실행

<?php 
$apache_server_load = /*hot to retrieve this value?*/; 
if($apache_server_load >= $my_defined_max_load){ 
    $ajax_domain = '/polling'; 
}else{ 
    $ajax_domain = ''; 
} 
?> 
<script> 
    [...] 
    $.ajax({ 
     url: '<?php echo $ajax_domain; ?>/mypage.php', 
     [...] 
    }); 
    [...] 
</script> 

편집 메신저

추신 : 나는 또한이 솔루션은 좋은 방법이 될 수 있다면 듣고 싶어 하겠지만, 다른 것 질문이 있으시면 언제든지 말씀해주십시오.

답변

4

mod_status을 살펴보십시오. 당신이있어 일단 당신이 요청하고 당신은 아마보다는 같은 요청을 다시 할 최소한 몇 초 동안 결과를 캐시 싶어

http://example.com/server-status?auto

구문 분석 할 것, 설정 들어오는 모든 요청마다.

+0

그게 내가 찾고 있었던거야! – Strae

0

시스템에 대해 아무 것도 말하지 않았습니다. 나는 당신이 리눅스 나 유닉스를 사용하고 있다고 가정하고있다. 현재로드를 얻는 가장 좋은 방법은 uptime 시스템 명령을 실행하는 것입니다.이 명령은 일부 상태와로드 평균을 제공합니다.

이의 정확한 계산은 시스템에 의존와 "고부하"또한 당신의 시스템에 따라입니다 그래서

preg_match("#load average: ([0-9\.]+), ([0-9\.]+), ([0-9\.]+)#", `uptime`, $matches); 
print_r($matches); 
같은 부하 뭔가를 얻기 위해 (... 바인딩 응용 프로그램 IO 또는 CPU 얼마나 많은 코어입니다)

트릭을 수행 할 수 있습니다.

+0

데비안에서 실행중인 Im – Strae

+0

이 작업은 이제로드가 높은 지 확인해야합니다. 감사! – Strae

2

일반적인 시스템로드는 PHP 함수 sys_getloadavg()을 사용하여 알 수 있습니다. 이것은 아파치 나 lighttpd 서버에 대한 어떤 정보도주지는 않지만 전체 서버의 부하가 어떻게되는지 개요를 얻을 수 있습니다.

+0

나는이 방법을 선호한다. 가동 시간은 같지만 PHP는 한계점이있다. – Strae