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


17

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

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

이 사이트에서 사용되는 PS 수의 모듈은 방대합니다 (168). 그러나 지금은 추천을 할 수있는 위치에 있지 않습니다.

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

로컬 인스턴스에서 xhprof를 실행 한 결과

답변:


4

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


- 이봐, 난 그냥 내 지역 개발 버전에 xhprof (안 서버에 노트북을) 실행 및 제안에 대한 감사 나는이 볼 picasaweb.google.com/lh/photo/...는 이 진짜인가? 페이지가 750Mb의 메모리를 소비하는 것이 가능합니까?
Dipen

스 래싱의 원인이 될 수 있습니까? 동일한 URL에 대해 나중에 프로파일 링 된 데이터 (아래에서 동일한 URL을 보는 경우 훨씬 적은 리소스를 사용하지만 diff 실행은 완전히 diff 및 극단적 인 리소스 사용률을 보여줍니다.
Dipen

1
그것은 실제로 달려 있지만 100MB 이상의 램을 사용하는 것이 잘못된 경우 99.9 %의 설정에 해당합니다.
mikeytown2

모듈 수 외에 다른 문제가있을 수 있습니까? 모듈을 생산에서 즉시 제거 할 수 있는지 잘 모르겠습니다. Btw, 로컬에서는 nginx + php-fpm을 사용하고 있으며 프로덕션 사이트에서는 빠른 cgi로 lighspeed를 사용하고 있습니다.
Dipen

1
캐시 그라인드를 드릴 다운하여 항상 어떤 기능을 사용하고 있는지 나열해야합니다. img715.imageshack.us/i/cgrindout.png
mikeytown2

1

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

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


Drupal 코어 다이내믹은 너무 많은 모듈이 동시에 상호 작용하는 즉시 새벽 전체를 느리게 만듭니다.

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

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

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

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

느린 파일 시스템 (네트워크 파일 시스템 또는 느린 하드 드라이브)이있는 상자에있는 경우 실행 시간에 눈에 띄는 영향을 줄 수 있습니다. Drupal은 많은 작은 파일 로 만들어졌으며 , PHP는 FS가 파일을로드 할 때마다 FS에서 I / O를 수행하도록합니다 (APC도 많은 도움이됩니다).

잘못 구성된 DBMS는 MySQL을 사용하는 경우 미세 조정에 대해 생각하면 병목 현상이 발생할 수 있습니다. 공유 호스팅을 사용하는 경우 Drupal 관련 (또는 준비된) DBMS 및 PHP 스택이 아닌 경우 아마도 잘못 구성되거나 조정되지 않아 사이트 속도가 느려질 수 있습니다.

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

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

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


안녕하세요, 여기 페이지 실행 시간을 말할 때 페이지 하단의 devel 모듈에 표시되는 값을 의미하며 SQL 쿼리 등을 포함하는 drupal 요청 / 응답주기의 일반적인 의미로 사용하지 않습니다. 내 질문은 인증 된 사용자와 관련하여. 따라서 보고서 실행 시간을보고 할 때 SQL 쿼리도 포함됩니까?
Dipen

15k RPM Linux 파일 시스템에서 파일 시스템에 병목 현상이 있는지 확실하지 않습니다. SQL 쿼리는 페이지에 따라 약 300-700ms 정도 걸리지 만 페이지 실행 시간은 ~ = 3 초입니다 (devel에 의해보고 됨). 다른 문제가 있는지 확실하지 않습니다.
Dipen

죄송합니다. 원본 게시물을 잘못 읽었습니다. 개발 값은 부팅에서 종료까지 계산됩니다 (개발 모듈에는이를 포함하여 많은 작업을 수행하기위한 자체 PHP 종료 처리기가 있습니다). 정확히 언제 시작하고 멈출지는 확실하지 않지만 Drupal 페이지 전체 작성 시간과 비즈니스 세부 사항이 해당 페이지 실행 시간에 포함됩니다. 예. 여기에는 모든 내용 (SQL 쿼리 시간 및 대기 시간 포함)과 자체 대기 시간이 포함됩니다 (개발 된 쿼리 로깅도 성능에 영향을 미침).
Pierre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.