


프로덕션 환경에서 PHP 성능 테스트 도구 xhprof를 사용하여 자세한 설명 게임 성능 테스트 도구 웹 성능 테스트 도구 네트워크 성능 테스트 도구
이 글은 프로덕션 환경에서 PHP 성능 테스트 도구 xhprof를 사용하는 방법에 대한 자세한 분석 및 소개입니다. 필요한 친구는 참고할 수 있습니다.
xhprof는 PHP 성능 테스트 도구입니다. Facebook에서 오픈 소스로 제공되며 프로필 도구라고도 할 수 있습니다. 이 단어를 어떻게 번역하여 그 의미를 표현해야 할지 모르겠습니다. 기존에 사용하던 xdebug와 비교하면 비슷한 점이 많습니다. 예전에는 참고할 수 있는 xdebug의 기록이 몇 개 있었는데, profiler_enable_trigger 파라미터를 켜도 프로덕션 환경에서 사용하면 끔찍하고, 성능에 큰 영향을 미친다는 점이 단점이다. CPU는 즉시 최고 수준에 도달합니다.
xhprof는 매우 가볍고, 프로필 기록 여부를 프로그램으로 제어할 수 있으므로 프로덕션 환경에서 사용이 가능해졌습니다. 문서에서 이러한 사용법을 볼 수 있습니다:
10,000분의 1의 확률로 xhprof를 활성화하고 평소에는 조용히 촬영하지 마십시오.
코드 복사코드는 다음과 같습니다.
if (mt_rand(1, 10000) = = 1) {
코드 복사
if ($xhprof_on) { // 프로파일러 중지 $xhprof_data = xhprof_disable(); // $xhprof_data를 어딘가에 저장합니다(예: 중앙 DB) ...}
register_shutdown_function 메소드를 사용할 수도 있습니다 프로그램 마지막에 xhprof 정보를 저장하도록 지정하려면 끝까지 가서 재작성의 불완전한 예를 판단하고 제시할 필요가 없습니다.
복사 코드
if (mt_rand(1, 10000) == 1) { xhprof_enable(XHPROF_FLAGS_MEMORY); Register_shutdown_function(create_funcion('', "$xhprof_data = xhprof_disable(); save $xhprof_data;"));}로그의 경우 현재 가장 원시적인 파일 형식을 사용하여 저장하고 정기적으로 지우십시오. 그런데 xhprof가 생성한 그래픽 프로필은 어떤 코드가 병목 현상이 되었는지 한 눈에 알 수 있어 정말 멋집니다.
by phpe: 다음은 예시입니다:
xhprof 사용 개선에 대한 아이디어
지난해 프로덕션 환경에서 xhprof를 사용한 이후 프로덕션에서 프로그램 디버깅이 진행되었습니다. 환경, 성능 최적화는 많은 편의성을 제공합니다. 하지만 아직 사용 중 개선해야 할 세부 사항이 있습니다.
xhprof의 프로필 로그는 프로덕션 서버에 파일 형태로 직접 저장되거나, 정기적으로 정리하거나, 수집하여 도구 기계로 옮겨야 볼 수 있습니다. 통나무.
xhprof에서 생성된 프로필은 큰 배열이므로 파일로 저장할 때 표준 PHP 직렬화를 사용합니다. 로그 파일은 상대적으로 크기 때문에 주의하지 않으면 서버 디스크 공간을 많이 차지하기 쉽습니다. .
로그 목록을 볼 때 일일이 클릭해서 보기가 어렵습니다.
이 문제에 관해 몇 가지 작은 아이디어가 있습니다.
로그 저장
중앙 로그 서버를 배포하고 Facebook의 스크라이브를 사용하여 로그를 수집합니다. 프로덕션 환경에서 서버가 생성한 xhprof 로그는 스크라이브 클라이언트에 기록되며, 클라이언트는 이를 자동으로 동기화하여 로컬 저장 공간을 차지하지 않고 중앙 로그 서버에 스크라이브합니다. 코드의 변경 사항도 비교적 작습니다. iXHProfRuns 인터페이스를 기반으로 XhprofRuns 클래스를 구현하고 save_run 메서드의 저장 메서드를 조정하면 됩니다.
직렬화 방법 변경
xhprof는 기본적으로 PHP의 기본 직렬화 방법으로 프로필 정보를 처리한 후 저장하는 것으로 지난 이틀 동안 igbinary vs serialize vs json_encode의 성능과 성능을 비교했습니다. 점유된 바이트 수 측면에서 igbinary는 이 테스트의 모든 측면에서 특정 이점을 가지고 있으며, 특히 점유하는 저장 공간이 크게 줄어들므로 개선을 위해 직렬화 방법을 igbinary_serialize로 변경하기만 하면 됩니다.
목록 표시 최적화
프로필 로그의 큰 그림을 하나씩 보는 것은 시간이 많이 걸리고 노동 집약적이며 대상이 아닙니다. 그래서 지금 하고 있는 작업은 프로필 로그 목록 중 처음 1000개 로그의 전체 실행 시간을 목록에 직접 출력하고, 실행 시간이 너무 긴 로그는 빨간색 굵은 글씨로 표시하는 것입니다. 이렇게 작은 변경을 한 후 작업 상태를 확인하고 싶을 때 로그 목록의 빨간색 링크를 클릭하기만 하면 살펴보므로 시간과 노력이 정말 절약됩니다.
xhprof 로그 파일에서 실행 시간을 얻는 방법은 무엇입니까? 간단한 코드는 다음과 같습니다
코드 복사
코드는 다음과 같습니다
* xhprof 로그에서 실행 시간 가져오기** @param string $log xhprof 로그 파일 경로* @return int 실행 시간*/function getSpentTime($log) { $profile = unserialize(file_get_contents($log));
return $profile['main()']['wt '] / 1000;}
이상에서는 xhprof 및 성능 테스트 도구를 포함하여 프로덕션 환경에서 PHP 성능 테스트 도구 xhprof의 사용을 기반으로 자세한 설명을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alipay PHP ...

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.

시스템이 다시 시작된 후 UnixSocket의 권한을 자동으로 설정하는 방법. 시스템이 다시 시작될 때마다 UnixSocket의 권한을 수정하려면 다음 명령을 실행해야합니다.

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.

phpstorm에서 CLI 모드를 디버그하는 방법은 무엇입니까? PHPStorm으로 개발할 때 때때로 CLI (Command Line Interface) 모드에서 PHP를 디버그해야합니다 ...
