Лучшие практики для оптимизации сайтов ЛАМПЫ для скорости? [закрытый]

Если вы запустите Outlook на сервере Exchange, вы можете создать так называемый агент транспорта для реализации этой функции.

20
задан meagar 7 February 2013 в 20:05
поделиться

7 ответов

Вот являются некоторые персональной должен-DOS, которую я всегда настраивал в своих приложениях ЛАМПЫ.

  • Установите mod_deflate для апача и не используйте gzip обработчики PHP. mod_deflate позволит Вам сжимать статическое содержание, как HTML JavaScript/CSS/статичного, а также обычный динамический вывод PHP, и это - то меньше вещи, о которой необходимо волноваться в коде.

  • Будьте осторожны с .htaccess файлами! Включение .htaccess файлы для каталогов в Вашем приложении означает, что Apache должен постоянно сканировать файловую систему, ища .htaccess директивы. Намного лучше поместить директивы в основной конфигурации или vhost конфигурации, где они загружаются однажды. Любое время можно избавиться от файла доступа уровня каталога путем перемещения его в основной конфигурационный файл, Вы экономите время доступа к диску.

  • Подготовьте слой базы данных своего приложения для использования какого-то менеджера соединений (я использую Singleton для большинства приложений). Не очень трудно сделать, и сокращение количества соединений с базой данных, которые открывает Ваше приложение, сохраняет ресурсы.

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

  • После того как Ваше приложение произошло и выполнение, установило время медленного запроса MySQL на небольшое число и контролирует журнал медленного запроса старательно. Это покажет Вам, куда Ваши проблемные запросы прибывают из и позволяют Вам оптимизировать свои запросы и индексы, прежде чем они станут проблемой.

  • Для серьезной производительности tweakers, Вы захотите скомпилировать PHP из источника. Установка от пакета устанавливает много библиотек, которыми Вы никогда не можете пользоваться. Так как среды PHP загружаются в каждый экземпляр потока Apache, даже память 5 МБ наверху от дополнительных библиотек быстро становится 250 МБ потерянной памяти, когда существует 50 существующих потоков Apache. Я сохраняю список своих стандартных./настраивало строк, которые я использую при создании PHP здесь, и я нахожу, что это удовлетворяет большинству моих приложений. Оборотная сторона - то, что, если Вы заканчиваете тем, что нуждались в библиотеке, необходимо перекомпилировать PHP для получения ее. Проанализируйте свой код и протестируйте его в среде дьявола, чтобы удостовериться, что у Вас есть все, в чем Вы нуждаетесь.

  • Уменьшите свой JavaScript.

  • Будьте готовы переместить статическое содержание, такое как изображения и видео, к нединамическому веб-серверу. Напишите свой код так, чтобы любые URL для изображений и видео были легко настроены для указания на другой сервер в будущем. Веб-сервер, оптимизированный для статического содержания, может легко служить десяткам или даже сотни времен быстрее, чем сервер динамического контента.

Это - то, о чем я могу думать первое, что пришло на ум. Поиск с помощью Google вокруг для лучших практик PHP найдет много подсказок относительно того, как написать более быстрый/лучше код также (Такой как: echo быстрее, чем print).

33
ответ дан 29 November 2019 в 23:02
поделиться

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

Теперь, на специфические особенности:

  1. Профиль. Определите свои узкие места. Это - самый важный шаг. Необходимо сфокусировать усилие, где Вы получите лучшие результаты. Необходимо иметь в распоряжении своего рода решение по контролю (как кактусы или munin), давая Вам видимость в то, что продолжается на Вашем сервере (серверах)
  2. Кэш, кэш, кэш. Вы, вероятно, найдете, что доступ к базе данных является Вашим самым большим узким местом на бэкэнде - но необходимо проверить это самостоятельно. К счастью, Вы, вероятно, найдете, что большой Ваш трафик для маленького набора ресурсов. Можно кэшировать те ресурсы в чем-то как memcached, сохраняя себя хит базы данных, и приводя к лучшей производительности бэкенда.
  3. Как другие упомянули выше, смотрите на правила производительности YDN. Рассмотрите забирание сопроводительной книги. Это поможет Вам с производительностью фронтэнда
  4. Установите APC PHP и удостоверьтесь, что он настроен с достаточной памятью для содержания всего скомпилированного байт-кода PHP. Мы недавно обнаружили, что наша установка APC не имела почти достаточного количества поршня; предоставление его достаточно для работы в сокращении нашего процессорного времени в половине и активности диска на 10%
  5. Удостоверьтесь, что Ваши таблицы базы данных правильно индексируются. Это идет рука об руку с контролем журнала медленного запроса.

Вышеупомянутое получит Вас очень далеко. То есть даже довольно тяжелый дб сайт должен смочь пережить первую полосу digg на сингле скромно-spec'd сервер при выполнении вышеупомянутого.

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

  1. Как выше, профиль. Контролируйте свое апачское действие - у Вас должна быть идея того, сколько соединений активно в любой момент времени, в дополнение к макс. количеству активных соединений, когда Вы получаете внезапные пакеты трафика
  2. Настройте апача с этим в памяти. Это - лучшее руководство по апачской конфигурации, которую я видел: Практическая mod_perl глава 11
  3. Возьмите столько загрузки прочь апача, сколько Вы можете. Apache, слишком мощный для обслуживания статического содержания эффективно. Необходимо использовать прокси реверса более легкого веса (как сквид) или веб-сервер (lighttpd или nginx), чтобы служить статическому содержанию и принять задание кормления с ложечки байтов для замедления клиентов. Это оставляет Apache, чтобы сделать то, что он прилагает все усилия: выполните свой код. Снова, книга mod_perl делает хорошее задание объяснения этого.

После того как Вы добрались настолько далеко, это - в основном проблема кэширования больше, и следящий за Вашей базой данных. В конечном счете Вы перерастете единственный сервер. Во-первых, Вы, вероятно, добавите поля более фронтэнда, все поддержанные сервером единой базы данных. Затем Вы оказываетесь перед необходимостью начинать распределять свою нагрузку базы данных вокруг, вероятно, sharding. Для превосходного обзора этого процесса роста посмотрите эту презентацию Живого Журнала

Для более всестороннего взгляда на большую часть вышеупомянутого, выезд, Создающий Масштабируемые веб-сайты, Cal Henderson, известности Flickr. Google имеет части в наличии книги для предварительного просмотра

11
ответ дан 29 November 2019 в 23:02
поделиться

Я использовал MysqlTuner для анализа производительности моих mysql серверов и, учитывая хорошее понимание дальнейших проблем для поиска с помощью Google, а также предоставления его собственных рекомендаций

3
ответ дан 29 November 2019 в 23:02
поделиться

Ресурс, который Вы могли бы найти полезным, является набором YDN правил производительности.

2
ответ дан 29 November 2019 в 23:02
поделиться

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

Посмотрите страницы в Сети разработчиков Yahoo о Лучших практиках для Ускорения Вашего веб-сайта и инструмента YSlow для наблюдения, какая часть загрузки сайта занимает время.

2
ответ дан 29 November 2019 в 23:02
поделиться

Не забывайте выключать atime для своей файловой системы!

2
ответ дан 29 November 2019 в 23:02
поделиться

Я рекомендовал бы запуститься с http://highscalability.com/

Что касается Ваших предложений:

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

Поскольку Apache в основном только загружает модули, Вам нужно. Не загружайте ничто больше. Как с PHP можно только использовать разветвление MPM, важно сохранить это тонким. Что касается оптимальных настроек, хорошо необходимо точно настроить их к определенному приложению, аппаратные средства и т.д. Если у Вас есть достаточно ЦП, это рекомендуемо, что Вы используете mod_deflate. Быстрее сервер может отправить данные клиенту, быстрее это может начать обрабатывать следующий запрос.

1
ответ дан 29 November 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: