matthewpaulson
  • 0
Новичок

WordPress Производительность MySQL и PHP

  • 0

иметь веб-сайт (www.americanbankingnews.com), который на сегодняшний день имеет 40 000–50 000 просмотров страниц. В настоящее время он находится на выделенном четырехъядерном сервере Xeon с 8 ГБ оперативной памяти. Сайт работает на WordPress и MySQL (находится на одном сервере), и в настоящее время я использую W3 Total Cache для кэширования страниц и запросов MySQL.

К сожалению, этого кажется недостаточно. Во время пикового трафика мои серверы получают несколько ошибок HTTP 500, а страницы, которые не кэшируются, загружаются медленно.

В настоящее время я не использую Xcache или какие-либо другие инструменты кэширования/ускорения PHP.

Есть ли дополнительные шаги, которые я должен предпринять, чтобы попытаться оптимизировать производительность MySQL и PHP? Или я должен раскошелиться на дополнительный сервер. В частности, меня интересуют дополнительные предложения по улучшению производительности MySQL и могут ли такие инструменты, как xcache, помочь в этой ситуации.

Share
  1. Обновление: я пробовал разные вещи, некоторые, вероятно, помогли, другие, вероятно, нет. Оказывается, W3 Total Cache вызывал какую-то проблему. Я вернулся к Super Cache и DB Cache Reloaded, и все идет хорошо.

    • 0
  2. Привет Мэтью Полсон,

    Я вижу, что вы используете W3 Total Cache, но ваша база данных и кеш объектов установлены на диск. Кэширование объектов и вашей базы данных на диск может иметь негативное влияние на производительность, особенно если вы получаете такой большой трафик.

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

    Чтобы действительно увидеть преимущества кэширования базы данных и объектов, вам нужно использовать кеш кода операции PHP, такой как APC. Вы можете следовать инструкциям по копированию и вставке в часто задаваемых вопросах по плагину, чтобы скомпилировать и настроить APC. Если вы используете Ubuntu или Debian, вы можете просто запустить команду: apt-get apc-php5 для установки.

    Как уже упоминалось, вы получите огромный прирост производительности и позволите своему сайту масштабироваться намного больше, настроив обратный прокси-сервер с Nginx.

    Я даю подробные инструкции по настройке и настройке в моем стеке производительности WordPress. статья.

    Вы также должны прочитать некоторые другие вопросы и ответы здесь. Было дано много хороших советов по производительности и масштабированию.

    Удачи в ваших поисках. Иногда управление собственным сервером может быть очень напряженным.

    Редактировать

    Просто чтобы показать производительность, которую вы можете получить, установив Nginx в качестве обратного прокси-сервера, я публикую тест Apache Benchmark, который я только что провел на своем сервере:

    x-wing ~: ab -n 1000 -c 80 http://wp-performance.com/
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking wp-performance.com (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Completed 600 requests
    Completed 700 requests
    Completed 800 requests
    Completed 900 requests
    Completed 1000 requests
    Finished 1000 requests
    
    
    Server Software:        nginx/0.8.54
    Server Hostname:        wp-performance.com
    Server Port:            80
    
    Document Path:          /
    Document Length:        3132 bytes
    
    Concurrency Level:      80
    Time taken for tests:   0.066 seconds
    Complete requests:      1000
    Failed requests:        0
    Write errors:           0
    Total transferred:      3605000 bytes
    HTML transferred:       3132000 bytes
    Requests per second:    15164.15 [#/sec] (mean)
    Time per request:       5.276 [ms] (mean)
    Time per request:       0.066 [ms] (mean, across all concurrent requests)
    Transfer rate:          53385.52 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    2   0.6      1       3
    Processing:     1    4   0.8      4       5
    Waiting:        1    3   0.8      3       5
    Total:          3    5   0.6      5       7
    
    Percentage of the requests served within a certain time (ms)
      50%      5
      66%      5
      75%      6
      80%      6
      90%      6
      95%      6
      98%      6
      99%      6
     100%      7 (longest request)
    

    Теоретически он может обрабатывать более 15 000 запросов в секунду. (та же сеть)

    • 0
  3. Много похожих вопросов и ответов: https://wordpress.stackexchange.com/search?q=mysql+optimize

    Это сводится к использованию инструментов, таких как mysqltuner, для исследования узких мест, проверки журналов на наличие ошибок и использования памяти, кэширования кода операции php, очистки версий постов/страниц для уменьшения размера БД и т. д.

    • 0
  4. Привет @Мэттью Полсон:

    Возможно, вы задаете неправильный вопрос.

    С вашим трафиком вы можете посмотреть внешний кеш с помощью nginx. Вот вопросы и ответы по nginx здесь, на сайте, множество соответствующих статей в поиске Google и плагин, который может связать WordPress с nginx на wordpress.org, и, наконец, статья об установке и настройке:

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

    • 0
  5. Есть ли у вас представление о том, что именно становится узким местом при высокой нагрузке? Это может быть другой тип ресурса (загрузка ЦП, поддержка сетевых подключений, нехватка памяти и т. д.).

    Общие вещи:

    • Кэш кода операции (сохранение скомпилированного PHP-кода в памяти) обязателен;
    • у вас, кажется, есть память для сжигания, поэтому стоит попробовать кеш объектов в памяти (W3TC поддерживает его, посмотрите на это). Это сделает многие вещи более постоянными и перенесет нагрузку с MySQL;
    • если программное обеспечение веб-сервера является узким местом (вы не упоминаете, что вы используете, Apache?), вы можете захотеть изучить альтернативный веб-сервер (например, nginx) или обратный прокси -сервер (опять же — у вас есть память для сжигания, я слышал хорошие отзывы о Varnish ).
    • 0
  6. Вы не шутили, просто попробовали зайти на ваш сайт и получили внутреннюю ошибку 500. Возможно, вы можете уменьшить количество используемых вами плагинов и убедиться, что все изображения оптимизированы и т. Д., Чтобы уменьшить размеры страниц, чтобы они потребляли меньше трафика для загрузки, следовательно, меньше ошибок.

    Вы также можете изучить HIP HOP для PHP. Я никогда не реализовывал его, но он был выпущен с открытым исходным кодом людьми из facbook, которые после его создания и использования увидели, что нагрузка на их сервер снизилась примерно на 30%. По сути, он берет обычные php-файлы, преобразует их в двоичные файлы C++ и выдает их.

    • 0
  7. Имеющееся у вас оборудование должно легко справляться с заявленным трафиком (в качестве эталона сайт, который я запускаю, достигает пика в ~ 40 тыс. Просмотров страниц в день на 2 ГБ Slicehost VPS) — так что это предполагает что-то совершенно неправильное.

    Итак, как говорили другие люди, первое, что вам нужно сделать, это понять, где проблема (ы).

    1. Какую информацию дает вам top, когда вы находитесь под нагрузкой? Используете ли вы память подкачки, скачет ли ваша нагрузка, когда вы сортируете по памяти и процессору, какие процессы являются основными?

    2. Можете ли вы установить что-то вроде munin, чтобы получить представление о вашем сервере?

    3. Предполагая, что вы используете Apache, как он настроен — важно знать следующее:

      • Тайм-аут
      • KeepAlive
      • MaxKeepAliveRequests
      • KeepAliveTimeout
      • (при условии, что вы используете Apache в режиме prefork) — все строки конфигурации в разделе prefork вашего файла конфигурации apache.
    4. Выполнение этой команды ps -ylC httpd --sort:rss даст вам представление о том, сколько памяти используют процессы Apache.

    5. Установите mtop и mysqltuner — насколько я помню, оба доступны через apt-get. Вы также должны включить медленное ведение журнала MySQL — обычно вам просто нужно раскомментировать строку в вашем файле my.cnf.

      • mtop дает вам представление в режиме реального времени о том, какие SQL-запросы выполняются (медленно). mysqltuner даст вам некоторое представление о том, какие изменения вам нужно внести в конфигурацию MySQL.
    6. Как предложили другие, что произойдет, если вы отключите плагины в период занятости? Сайт ускоряется? Какие плагины у вас установлены?

    7. Вы хоть представляете, сколько трафика вы получаете в периоды наибольшей активности? Например, 4000 просмотров страниц за 10 минут.

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

    • 0
  8. я не знаю, какие программы вы установили, но, возможно, это проблема APC — Zend:

    http://www.ivankristianto.com/web-development/server/alternative-php-cache-apc-not-compatible-with-zend-optimizer/1726/

    Эта проблема возникает на моем VPS после установки альтернативного кэша PHP (APC). А еще у меня уже установлен оптимизатор Zend на том же VPS. После того, как я установил APC, мой блог WordPress показывает странное поведение. Иногда я получал Error 500 Internal Server Error, а иногда фатальную ошибку PHP.

    • 0

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

You must login to add an answer.