Blackfire : 홈스테드 개선 응용 프로그램의 성능 병목 현상을 정확하게 수정하고 고정
주요 통찰력 :
Blackfire는 응용 프로그램에서 성능 병목 현상을 식별하고 해결하기위한 강력한 도구, 특히 농가가 개선 된 것입니다.
Blackfire의 그래프 이해 (참조 프로파일, 독점 시간, 포괄적 시간, 뜨거운 경로) 성능 배수구를 정확히 찾아내는 데 중요합니다. 과도한 메모리 사용, CPU 시간 또는 전반적인 활동.
이 기사는 다중 이미지 갤러리 블로그 최적화에서 BlackFire의 응용 프로그램을 보여줍니다. 병목 현상 (예 : pdoexecute)의 식별과 성능을 향상시키기위한 솔루션 (예 : Pagination)의 구현을 강조합니다.
블랙 파이어를 사용한 지속적인 성능 테스트는 응용 프로그램 수명주기 전체에서 필수적입니다. 이러한 테스트를 CI/CD 파이프 라인 (BlackFire의 프리미엄 계획에서 제공하는 기능)에 효율성을 크게 향상시킵니다.
(이 기사는 성능 벤치마킹 및 최적화를위한 샘플 멀티 이미지 갤러리 블로그 응용 프로그램을 구축하는 시리즈의 일부입니다. 여기에서 저장소에 액세스하십시오.)
이 게시물은 이전의 Blackfire 소개를 기반으로 성능 문제를 식별하고 해결하는 데 실질적인 응용 프로그램을 보여줍니다. 우리는이를 사용하여 샘플 프로젝트를 분석하고 즉각적인 개선을위한 영역을 타겟팅합니다. 홈스테드 개선을 사용하는 경우 (권장되는 경우) 블랙 파이어는 이미 설정해야합니다. 사전 블랙 파이어 지식이 필요하지 않습니다.
블랙 파이어 메트릭 이해 :
시작하기 전에 Blackfire의 성능 그래프에 사용 된 주요 용어를 정의해 봅시다.
-
참조 프로필 :
애플리케이션의 초기 성능 기준입니다. 후속 프로파일은이 기준선과 비교하여 개선을 측정합니다. -
독점 시간 :
는 특정 함수/메소드 내에서만 소요되는 시간, 호출 된 함수에 소요되는 시간을 제외하고.
포괄적 시간 : -
모든 기능에서 소요되는 시간을 포함하여 함수를 실행하는 데 소요되는 총 시간.
- 핫 경로 : 프로파일 링 중에 응용 프로그램에서 가장 활발한 부분으로, 종종 자원 소비가 높은 영역 (메모리 또는 CPU)을 나타냅니다.
블랙 파이어 설정 :
블랙 파이어 계정을 만듭니다. 계정 페이지는 를 구성하는 데 필요한 토큰 및 ID를 제공합니다. 파일에는 맨 아래에 자리 표시자가 포함되어 있습니다
>이 라인을 무너 뜨리고 자리 표시 자 값을 계정 세부 사항으로 바꾸십시오.
블랙 파이어 크롬 확장을 설치하십시오. 이 확장은 주로 수동 프로파일 링에 사용되며 대부분의 시나리오에서 일반적입니다. 다른 통합을 사용할 수 있습니다 (여기에서 전체 목록 참조). -
블랙 파이어로 최적화 : 사례 연구
우리는 모든 웹 사이트의 중요한 페이지 인 홈페이지를 벤치마킹합니다. 여기에서 느린 로딩 시간은 사용자 경험과 바운스 속도에 직접 영향을 미칩니다. 다른 페이지 (예 : 이미지 업로드)를 테스트 할 수 있지만 읽기 성능은 일반적으로 쓰기 성능보다 우선 순위가 결정됩니다.
우리의 초기 앱은 모든 갤러리를 연령별로로드하고 정렬합니다. 프로파일을 보려면 홈페이지를 열고 BlackFire Extension 버튼을 클릭하고 "프로파일!"을 선택하십시오.
초기 프로파일 결과 :
그래프는 가 포용 적 시간의 100% (진한 분홍색 섹션)를 소비하여 기본 병목 현상임을 나타냅니다. 다른 방법은 더 큰 연한 분홍색 막대 (포함 시간)를 보여줄 수 있지만, 이들은 종속 기능의 누적 시간을 나타냅니다. 다크 핑크 섹션은 즉각적인주의가 필요한 기능을 나타냅니다.
RAM 모드로 전환하면 Twig Rendering이 RAM의 대다수 (약 40MB)를 소비합니다. 이것은 많은 양의 데이터가 렌더링되는 경우에 예상됩니다.
뜨거운 경로 (두꺼운 경계)는 병목 현상을 분명히 강조합니다. 집중 노드 (높은 시간 소비 된 노드)는 핫 경로의 직접적인 부분이 아니더라도 문제를 나타낼 수 있습니다.
분석에 따르면 및 (높은 RAM 사용)는 홈페이지에 모든 갤러리를로드하여 발생합니다. 해결책 : Pagination 구현.
페이지 매김 구현 :
에 PDOExecute를 추가하고 12와 같은 값으로 설정하십시오.
갤러리 페치 절차를 수정하여 Pagination :
게으른 하중을 위해 홈 뷰에 JavaScript를 추가하십시오 :
게으른 하중 갤러리의 경우 PDOExecute
에 새 방법을 추가하십시오 :
unserialize
성능 비교 :
Propiler를 재구성 한 후 페이지 매김을 구현하면 상당한 개선이 가능합니다
메모리 사용량은 10 배나 감소하고 로딩은 거의 즉각적입니다. 새로운 병목 현상은 , 개발 환경의 결과입니다. 생산 모드로 전환하면 성능이 향상됩니다
DebugClass
결론 :
제공된 FAQ 섹션은 일반적으로 PHP 성능 최적화와 관련된 귀중한 정보를 제공하기 때문에 크게 변경되지 않습니다. 모니터링 도구, 일반적인 문제, 최적화 기술, 확장 성 및 모범 사례와 같은 주제를 정확하게 다룹니다.
위 내용은 BlackFire를 통한 PHP 수준의 성능 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!