danielbachhuber
  • 0
Новичок

Каков идеальный способ профилирования использования памяти WordPress?

  • 0

Мы запускаем многосайтовый экземпляр WordPress на двух серверах Rackspace Cloud, одном веб-сайте и одной базе данных, с примерно 30 сайтами в настоящее время. Я поставил Nginx впереди статических ресурсов, а Apache обрабатывает все динамические запросы. Я также настроил Memcached для базы данных и кэширование кода операции APC для PHP. W3 Total Cache включен по умолчанию на всех наших сайтах.

Это чертовски быстро с одной проблемой: процессы Apache обычно весят от 80 до 120 МБ. Веб-сервер имеет 2 ГБ памяти, что означает, что я получаю 15 или около того процессов, пока все не пойдет наперекосяк. Процессы, очевидно, не должны быть такими большими, но я недоумеваю, почему они такие.

Какова хорошая стратегия для определения того, что происходит?

Заранее спасибо!

Обновление от 02.10.10: Для тех, кому интересно, решение проблемы с памятью заключалось в отключении PHP xdebug (было случайно включено при настройке и вызывало случайные всплески использования памяти).

Share
  1. Объем памяти процесса apache, о котором вы говорите (от 80 до 120 МБ на процесс), можно разделить на две причины.

    1. Апачи
    2. Вордпресс

    Апачи

    Вы можете оптимизировать apache, загрузив только необходимое количество модулей и другие настройки оптимизации, которые уменьшат объем памяти. Если вы еще не оптимизировали это, внесите некоторые изменения.

    Вордпресс

    WordPress просто потребляет много памяти и вообще не очень оптимизирован. Я бы начал с замены класса базы данных чем-то более правильно реализованным. Это должно увеличить скорость и значительно сократить использование памяти. Рядом с этим я не так много, чтобы предложить. Думаю, отказ от использования Worpdress не считается полезным.

    Стратегии

    Чтобы узнать, что происходит, вам нужно отслеживать, сколько памяти занимает запрос WordPress. Существует функция получения пикового использования ( memory_get_peak_usage() ), которую вы можете использовать для мониторинга использования памяти worpdress. Если это приближается к 80-120 МБ, о которых вы писали, вы знаете, что WordPress создает вам головную боль. Возможно, вы захотите записать отметку времени, пиковый объем памяти, время выполнения и запрошенный URI.

    Использование Nginx для обслуживания кешированных страниц WordPress, безусловно, поможет вам, потому что это предотвратит загрузку WordPress — даже для тех «входящих» кешей, подобных тому, который вы используете. Они концептуально не работают, потому что являются плагином для WordPress, поэтому по крайней мере часть WordPress должна быть загружена даже для кешированных результатов.

    • 0
  2. Даниэль,

    Я с уважением не согласен с kenkeiter, я понимаю использование nginx в качестве обратного прокси-сервера перед Apache. Гарвардский закон добился большого успеха с этим методом, и у них есть отличная статья о том, как они это делают, со ссылкой на их плагин WordPress, который помогает взаимодействовать с nginx:

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

    Что они обнаружили в Harvard Law, так это то, что, поскольку nginx в основном кэширует все запросы во внешнем интерфейсе, на самом деле не улучшает производительность использование любых других подключаемых модулей кэширующего типа во внутреннем интерфейсе и не стоит дополнительной сложности. Если вы серьезно относитесь к использованию nginx таким образом, я рекомендую вам взглянуть на эту статью об их опыте и попытаться сократить динамические процессы, включая кэширование на стороне WP.

    Некоторые базовые проверки, такие как тщательный просмотр журналов доступа и ошибок Apache, чтобы увидеть, какие типы запросов на самом деле должны выполняться динамически, и попытка уменьшить количество таких случаев, также могут быть хорошим началом.

    • 0
  3. Ну, во-первых, вы используете Apache и Nginx — что-то лишнее. Вы должны использовать Nginx/FastCGI с PHP. Учебник на этом сайте должен помочь. В противном случае, я думаю, что некоторые недавние изменения в вашем коде приводят к тому, что какая-то ошибка в PHP не освобождает память должным образом. Нет причин, по которым процесс Apache должен потреблять столько памяти.

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

    Удачи!

    @kenkeiter

    • 0

Оставить ответ

You must login to add an answer.