it-swarm-ko.tech

WordPress 메모리 사용량을 프로파일 링하는 이상적인 방법은 무엇입니까?

우리는 현재 두 개의 Rackspace Cloud 서버, 하나의 웹 및 하나의 데이터베이스에서 30 개 정도의 사이트가있는 WordPress 다중 사이트 인스턴스 실행 입니다. 나는 정적 인 자산을 위해 Nginx를 앞에두고 아파치는 모든 동적 요청을 처리한다. 필자는 데이터베이스를위한 Memcached와 PHP를위한 APC op 코드 캐싱을 구성했습니다. W3 총 캐시는 기본적으로 모든 사이트에서 사용하도록 설정되어 있습니다.

아파치 프로세스는 정기적으로 80 ~ 120MB의 무게를 지닙니다. 웹 서버에는 2GB의 메모리가 있습니다. 즉, 문제가 발생할 때까지 15 개 정도의 프로세스가 필요합니다. 프로세스는 분명히 그만큼 커야 만합니다. 그러나 나는 그 프로세스가 왜 그렇게 까다 롭습니다.

무슨 일이 일어나고 있는지 확인하기위한 좋은 전략은 무엇입니까?

미리 감사드립니다.

10/2/10 업데이트 : 메모리 문제의 해결책은 PHP xdebug를 사용하지 못하게하는 것입니다 (실수로 구성이 활성화되어 임의의 메모리 사용량이 급증했습니다) ).

8
Daniel Bachhuber

Apache 프로세스 메모리 양 (프로세스 당 80에서 120MB)은 두 가지 이유로 나눌 수 있습니다.

  1. 아파치
  2. 자료 Wordpress

아파치

필요한 모듈 수를로드하고 메모리를 줄이는 다른 최적화 조정을 통해 Apache를 최적화 할 수 있습니다. 아직 최적화하지 않았다면 약간의 수정을하십시오.

자료 Wordpress

Wordpress는 많은 메모리를 소비하며 전혀 최적화되지 않았습니다. 나는 데이터베이스 클래스를보다 적절하게 구현 된 것으로 교체하는 것으로 시작할 것입니다. 속도가 빨라지고 메모리 사용량이 많이 감소해야합니다. 그 다음으로 제안 할 것이별로 없습니다. Worpdress를 사용하지 않는 것은 도움이되지 않는다고 생각합니다.

전략

무슨 일이 일어나고 있는지 알아 내기 위해, 당신은 얼마나 많은 메모리가 Wordpress 요청을 차지하고 있는지 추적해야합니다. worpdress 메모리 사용량을 모니터링하는 데 사용할 수있는 피크 사용량 함수 ( memory_get_peak_usage() )가 있습니다. 그것이 당신이 대략 썼다 80 - 120 MB에 가깝게 오는 경우에, 당신은 wordpress가 당신의 두통을 창조하고 있다는 것을 알고있다. 타임 스탬프, 최대 메모리, 실행 시간 및 요청 된 URI를 기록 할 수 있습니다.

캐시 된 WordPress 페이지를 제공하기 위해 Nginx를 사용하면 WordPress가로드되는 것을 방지 할 수 있으므로 사용하는 것과 같은 "인바운드"캐시의 경우에도 도움이됩니다. 그들은 WordPress의 플러그인이기 때문에 개념 상 끊어졌습니다. 따라서 적어도 캐시 된 결과에 대해서도 WordPress의 일부분을로드해야합니다.

4
hakre

다니엘,

나는 정중하게 kenkeiter에 동의하지 않는다. 아파치 앞에서 리버스 프록시로 nginx를 사용하는 것을 이해한다. 하버드 법 (Harvard Law)은이 방법으로 큰 성공을 거두었으며, nginx와의 인터페이스를 돕는 워드 프레스 (WordPress) 플러그인에 대한 링크를 통해 어떻게하는지에 대한 훌륭한 기사를 가지고 있습니다.

http://blogs.law.harvard.edu/djcp/2010/01/nginx-as-a-front-end-proxy-cache-for-wordpress/

Harvard Law에서 발견 한 사실은 nginx가 기본적으로 프론트 엔드에서 모든 요청을 캐싱했기 때문에 백엔드에서 다른 캐싱 유형 플러그인을 사용하기 위해 성능을 실제로 향상시키지 못했고 추가적인 복잡성을 감수 할 가치가 없다는 것입니다. 이러한 방식으로 nginx를 사용하는 것에 대해 진지한 사람이라면, 경험에 대한 기사를 살펴보고 WP 측 캐싱을 포함한 동적 프로세스를 줄이는 것이 좋습니다.

Apache의 액세스 및 오류 로그를 신중하게보고 어떤 종류의 쿼리를 실제로 동적으로 수행해야하는지 확인하고 그러한 경우를 줄이려고하는 것과 같은 일부 기본적인 작업은 좋은 시작일 수 있습니다.

1
mitcho

음, 우선, 아파치와 Nginx를 사용하고 있습니다. PHP를 사용하는 Nginx/FastCGI를 사용해야합니다. 이 사이트의 튜토리얼은 도움이 될 것입니다. 그렇지 않으면, 내 생각에 가장 최근의 추측은 PHP에서 메모리를 적절하게 해제하지 못하게하는 코드에 대한 일부 변경을 일으키는 것입니다. 아파치 프로세스가 그렇게 많은 메모리를 소비해야하는 이유는 없습니다.

http://interfacelab.com/nginx-php-fpm-apc-awesome/

행운을 빕니다!

@kenkeiter

0
kenkeiter