it-swarm-ko.tech

drupal 페이지 실행 시간에 기여하는 것은 무엇입니까?

Memcache를 사용하여 주요 성능 문제가있는 사이트를 조사 중입니다. 수와 총 실행 시간 (3 초에서 230 ms)으로 쿼리 수를 줄일 수 있었지만 페이지 실행 시간은 날 뛰었습니다. devel에 의해 출력 된 값을보고) 내 이해는 페이지 실행 시간 = PHP가 실행되는 데 걸리는 시간이므로 APC를 설치했으며 APC 제어판 (APC와 함께 제공된 apc.php)에서 php opcode가 캐시되고 통계가 조회되는 것을 볼 수 있지만 내 페이지 실행 시간이 줄어들지 않습니다. 그래서 내 질문은 두 가지로 생각됩니다.

  • 페이지 실행 시간에 기여하는 요소는 무엇입니까? PHP를 실행하는 데 시간이 걸립니까?
  • 페이지 실행 시간을 줄이려면 어떤 방법을 사용해야합니까? 나는 APC를 시도했지만별로 도움이되지 않았다

이 사이트에서 사용 된 P.S 모듈 수는 엄청나지만 (168) 지금은 추천을 할 수있는 위치에 있지 않습니다.

Edit : 로컬 인스턴스에서 xhprof를 실행 한 결과 (mikeytown에서 권장), 이것은 나중에 나오는 결과가 스 래싱으로 인한 것 같아 미친 것 같습니다? 동일한 URL에 대한 diff 실행은 큰 차이가 있으며 리소스 사용량이 너무 많습니다. 또한 왜 오늘이 아닌 값을 보여주는 지 확실하지 않습니다. | (방금이 랩톱에 xhprof를 설치했습니다)

Output of running xhprof on local instance

16
Dipen

귀하의 사이트에 대한 정보를 얻으십시오. xdebug 또는 xhprof 는 하나를 생성 할 수 있습니다. 어떤 기능을 실행하는 데 가장 오래 걸리는지 알려줍니다. 당신이 이것을 할 때까지, 그 나쁜 추측 게임.

4
mikeytown2

편집 : 원래 게시물을 잘못 읽었습니다. 168 개의 모듈이 많으며 300-700ms의 SQL 쿼리는 huge입니다. 더 많은 모듈을 사용할수록 모듈이 일부를 수행하자마자 더 많은 쿼리가 수행됩니다.

공격적인 캐싱을 사용하고 가능한 경우 모든 것을 캐시하고 충분하지 않은 경우 리버스 프록시 캐시를 시도하십시오. 파일에 CDN을 사용하면 전체를 크게 향상시킬 수 있습니다. 리버스 프록시 캐시는 필요하지 않은 페이지를 방문 할 때 일부 인증 쿠키를 제거하여 도움을 줄 수 있습니다 (핵심은 사용자가 익명이라고 생각하고 캐싱을 최대화 함).


Drupal 핵심 역동 성은 너무 많은 모듈이 동시에 상호 작용하는 즉시 전체 새벽을 느리게 만듭니다.

예를 들어 필드를 사용하는 대신 hook_node_load () 시간에 데이터를로드하는 많은 모듈을 사용하는 경우 필드 사용이 캐싱 효율성을 보장하는 동안 많은 쿼리를 생성합니다.

렌더링에도 많은 시간이 소요될 수 있습니다. drupal_render () (언제나 렌더링 API가 호출 됨)는 API의 유용한 부분이지만 (실제로는 유용하지만) 약간 느립니다. PDO (D7) 및 전체 DBTNG로 전환하면 무시할 수없는 대기 시간이 추가됩니다.

즉, 코어 자체는 매우 빠르지 만 (거의 아무것도 설치되지 않은 경우에도 너무 많은 SQL 쿼리를 수행함) 제대로 코딩되지 않은 모듈은 종종 병목 현상이 발생합니다.

APC는 실행되는 코드에 따라 2 또는 3마다 실행 시간을 나눌 수 있습니다. 잘 구성하면 (모든 APC 최적화를 사용할 수있게됩니다.) 공식 APC 매뉴얼은 잘 작성되어 있으며 귀하를 안내 할 것입니다.

느린 파일 시스템 (네트워크 파일 시스템 또는 느린 하드 드라이브)이있는 상자에있는 경우 실행 시간에 눈에 띄는 영향을 줄 수 있습니다. Drupal은 작은 파일의 많은에서 만들어 짐) PHP FS 그것들 중 하나를로드 할 때마다 (APC도 많은 도움이됩니다).

잘못 구성된 DBMS는 MySQL을 사용하는 경우 미세 조정에 대해 생각하면 병목 현상이 발생할 수 있습니다. 공유 호스팅을 사용하는 경우 Drupal 특정 (또는 준비된) DBMS) 및 PHP 스택이 잘못 구성되었거나 조정되지 않은 경우) 정말 느린 사이트로 이어집니다.

모든 캐시를 활성화하는 것을 잊지 마십시오. 사이트가 사용자 중심으로 인증되지 않은 경우 공격적인 페이지 캐싱을 활성화하십시오 (정말 훌륭합니다).

블록이 많을수록 전체 페이지가 느려지고, 뷰 모듈 모듈 블록은 가시성을 제한하지 않으면 사용하는 Views 플러그인에 따라 OG의 블록이 큰 고통이 될 수 있습니다. 페이지 단위로 또는 사용자 정의 PHP 코드 (다른 블록도 항상 블록 가시성을 수동으로 설정하고, 빈 블록을 렌더링하지 않도록 프레임 워크를 크게 도와줍니다)).

Hook_init ()를 사용하는 모듈을 피하십시오. 403 또는 404가 있어도 모든 페이지가 느려지더라도 (이미지 캐시 생성 시간이 느려지 며, 파일의 404 오류는 파일이 존재하지 않는다고 말하면 새벽이 느려집니다).

1
Pierre