로드 시간이 오래 걸리는 페이지를 Apache에서 확인하는 방법은 무엇입니까? 오래 걸리는 PHP 스크립트를 어떻게 알 수

Apache에서로드하는 데 가장 오래 걸리는 PHP 스크립트를 어떻게 알 수 있습니까?



답변

이를 수행하는 몇 가지 방법이 있습니다.

1 : 웹 서버에서 mod_status 를 활성화 하십시오. 이를 통해 / server-status /를 탐색하여 Apache 서버가 일반적으로 어떻게 작동하는지에 대한 개요를 얻을 수 있습니다. 이 위치에 대한 액세스를 제한해야합니다.

ExtendedStatus on
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.0.0/24
</Location>

2 : 처리 시간을 추가하도록 LogFormat 지시문을 수정하십시오 . 그런 다음 URI를 응답 시간과 연결할 수 있습니다.

LogFormat "%h %t \"%r\" %b sec:%T usec:%D"

이것은 원격 IP, 요청 날짜-시간, 요청, 전송 된 바이트, 초 및 마이크로 초를 표시합니다.

3 : 스크립트 메모리 크기 및 스크립트 적중률의 경우 Xcache 와 함께 제공되는 관리 콘솔 이 매우 좋습니다. 클래스 계급이 큰 스크립트는 메모리에서 여러 메가로 확장 될 수 있습니다.

4 : PHP 스크립트 프로파일 링이 도움이 될 수 있습니다. 단일 스크립트 프로파일 링에 집중하고 싶다면 Xdebug 가 도움이 될 것입니다. 사용자 Damien이 방법을 제안합니다. 메모리 사용량 을 기록하고 마이크로 시간을 사용 하는 것이 좋습니다 .

$THRESH = 2;

$profile = array();
$profile['start'] = microtime( true );
// stuff
$profile['end'] = microtime( true );
$profile['delta'] = $profile['end'] - $profile['start'];

if( $profile['delta'] >= $THRESH )
    error_log( __FILE__.": ".$profile['delta']." seconds " );

임계 값을 조정하면 로그가 훨씬 깨끗해집니다.


답변

Apache JMeter로 실행하십시오 .

Apache JMeter는 정적 및 동적 자원 (파일, 서블릿, Perl 스크립트, Java 오브젝트, 데이터베이스 및 쿼리, FTP 서버 등)에서 성능을 테스트하는 데 사용될 수 있습니다. 서버, 네트워크 또는 객체의 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한로드 유형에서 전반적인 성능을 분석하는 데 사용할 수 있습니다. 이를 사용하여 성능을 그래픽으로 분석하거나 동시로드가 많은 서버 / 스크립트 / 객체 동작을 테스트 할 수 있습니다.


답변

보고서 도구를 통해 서버 로그를 실행하십시오. 적절한 사용자는 평균 사용자가 각 페이지를 다운로드하는 데 걸리는 시간을 알려줄 수 있어야합니다. 또한 각 페이지의 최소 및 최대 다운로드 시간 및 기타 많은 통계를 보여줍니다.


답변

Y 느림 은 페이지로드 속도의 성능을 찾는 방법 중 하나입니다.


답변

스크립에 따라 마이크로 타임 기능을 사용할 수 있습니다.

$stime = microtime();
$stime = explode(" ",$stime);
$stime = $stime[1] + $stime[0];

//Some Code...

$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];

$totaltime = ($mtime - $stime);
echo $totaltime;

결함이있는 코드 부분을 찾는 데 필요한만큼 휴식을 취하십시오.
(그러나 아마도 이것은 SO 대답이었을 것입니다 …)


답변

이 명령을 사용하여 응답하는 데 너무 오래 걸리는 것을 식별하고 있습니다.

$ w3m http://localhost/server-status | tee | grep "GET\|HEAD\|POST" | awk '{if ($6>15) print}'