PHP 확장 드루팔 호스팅 Xhprof
웹 응용 프로그램이 가장 많이 요구 중 하나는 성능 문제를 진단하고 평가하는 방법이다. Platform.sh 이미 신규 및 기존 코드의 성능 문제를 진단, 각 힘내 지점에 일치하는 새로운 환경을 생성하기 때문에 생산 현장의 동작에 영향을주지 않고 할 그 어느 때보 다 쉬워졌습니다. 이 포스팅은 드루팔 응용 프로그램의 성능 프로파일 링을하고 성능 핫스팟 쉽게 평가 있도록 이미지를 flamegraph 만들 수 XHProf PHP 확장과 함께 Platform.sh 환경을 사용하는 방법을 보여줍니다. 함께이 툴이 블로그 게시물을 가하고이 과정을 설명하는 자신의 작업 YesCT 및 msonnabaum 특별 감사.
이 포스팅은 독자가 새로운 힘내 분기를 만들었다 고 가정합니다 (그리고 Platform.sh 환경에 대응) 또는이 작업을 수행하기 위해 기존의 것을 사용하고자. 이 프로세스에 대한 자세한 내용은 설명서 페이지를 참조하십시오.
우리가해야 할 첫번째 일은 XHProf 확장은 우리의 Platform.sh 프로젝트에서 활성화되어 있는지 확인합니다. 우리는과 같이, 우리의 .platform.app.yaml 파일의 확장자 목록에 키를 추가하여이 작업을 수행 :
이것은 자동으로 우리의 확장을 가능하게 할 것이다. 이제 우리는 우리의 도구가 있는지 확인하기 위해 우리의 배포 후크에 몇 줄을 추가합니다. (우리는 플랫폼 응용 프로그램의 임시 디렉토리를 사용하고있을 것이고,이 같은 환경의 배포에 걸쳐 지속되는 동안, 우리는 우리의 코드를 병합 가능하고 주변의 도구를 유지하려는. 이제 .platform.app의 배포 후크 부분이 추가하자 .yaml :
다음으로, 우리는 실제로 페이지 요청시 XHProf를 사용하는 우리의 코드베이스를 알 필요가있다. 우리는 드루팔의 index.php 파일의 전면에 일부 코드를 추가하여이 작업을 수행 할 수 있습니다. 바닐라 모드 (즉 Git 저장소에 최선을 다하고 전체 드루팔 사이트에) 우리는 단순히 index.php 파일을 편집 :이 일을하는 방법에는 두 가지가 있습니다. 우리는 프로젝트 모드를 사용하는 경우, 우리는 우리의 저장소에 아래 패치를 추가하고 우리가 빌드 과정에서 드루팔을 패치 할 수 있도록 우리의 project.make 파일에 행을 추가합니다.
이 index.php에 대한 패치입니다 :
그리고 우리는 프로젝트 모드에서 우리의 메이크 파일에 다음 행을 추가합니다 :
노력이 추가 코드, 우리는 Platform.sh에 밀어 준비하고 새로운 환경을 구축했다. 그 일 일단, 이제 재미가 시작된다! 우리는 (이 플랫폼 ssh를 달성하는 CLI를 사용하여) 우리 Platform.sh 환경에 SSH를 필요로하고 우리는 / 응용 프로그램입니다 우리의 홈 디렉토리에 끝날 것입니다. 우리의 코드베이스는 / 응용 프로그램 / 공공 장소에서 살고있다. 그러나 우리는 우리의 도구와 결과에 대한 응용 프로그램의 임시 디렉토리를 사용하기 위해 배포 후크를 설정합니다. 우리의 임시 디렉토리는 다음과 같이 보일 것입니다 :
이것은 우리의 프로파일 링 패치 파일에 저장하는 데 예상되는 디렉토리를 설정하고 우리가 flamegraph에 그 프로파일을 설정하는 데 필요한 도구를 잡고. 이제 테스트 할 시간이다! Platform.sh 환경의 URL을 사용하여, 우리는 우리가 프로파일에 관심이 어떤 페이지를로드합니다. (우리는 우리의 flamegraph를 구축하는 통계 괜찮은 세트를 수집 할 수 있도록 일반적으로는 좋은 생각이 페이지를 여러 번로드합니다.) 우리는 우리가 우리의 / 응용 프로그램에서 프로파일 결과 파일의 더미를해야한다는 완료하면 / tmp를 / xhprof 디렉토리, 그래서 같은 :
주목 우리의 패치 이름이 쉽게 우리가 필요로하는 단지 사람을 잡아 수 있습니다 요청 된 경로에 따라 결과 파일. 이 경우, 우리는 사용자의 주문 페이지의 성능에 관심이, 그래서 우리는 그 결과를 사용합니다. 우리는 결과에 대해 별도의 폴더를 만들고 그것으로 만 파일을 이동 :
이제 우리는 우리의 두 번째 폴더에 있습니다 만 그 결과 파일이 있어야합니다. flamegraph을 만들려면, 우리는 flamegraph 도구를 사용 (펄 로케일 오류를 무시해도) 우리가 배포 후크를 사용하여 다운로드 한 :
따 - 다! 이제 우리 SVG는 우리의 Platform.sh 환경에서 우리의 드루팔 파일 디렉토리에 볼 수 있습니다. 우리는 우리가 예상 한 것보다 페이지 요청시 더 많은 시간을 소모하는 기능을 식별 할 flamegraph를 사용하여 웹 브라우저에서로드 및 성능을 검사 할 수 있습니다. 예 :
이것은 우리가 쉽게주의가 필요하거나 성능에 영향을 미치는 버그를 포함하는 우리의 코드 조각을 식별 할 수 있습니다 - 우리는 개발자주의가 필요한 문제 영역을 찾고, 각 함수 호출의 자녀에 그래프와 피어의 다양한 구성 요소를 찾아 볼 수 있습니다. (색상은 대비를 사용하고 아무 의미가 없습니다.)이 Platform.sh 팀은 최근에 몇 가지 문제가 코드를 식별하기 위해이 방법을 사용하고 우리의 순서로 작업을 새로 고침에 약 1천2백퍼센트의 성능 향상을 달성 감아. 이것은 확실히 설정하고 사용하는 노력이 가치있는 도구입니다.