Если вы запустите Outlook на сервере Exchange, вы можете создать так называемый агент транспорта для реализации этой функции.
Вот являются некоторые персональной должен-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
).
Во-первых, поймите, что производительность является итеративным процессом. Вы не создаете веб-приложение в единственной передаче, запускаете его и никогда не работаете над ним снова. Наоборот, Вы начинаете с малого и решаете проблемы производительности, когда Ваш сайт растет.
Теперь, на специфические особенности:
Вышеупомянутое получит Вас очень далеко. То есть даже довольно тяжелый дб сайт должен смочь пережить первую полосу digg на сингле скромно-spec'd сервер при выполнении вышеупомянутого.
Вы в конечном счете поразите точку, где апачская конфигурация по умолчанию будет не всегда мочь не отставать от входящих запросов. Когда Вы врезаетесь в эту стену, существует две вещи сделать:
После того как Вы добрались настолько далеко, это - в основном проблема кэширования больше, и следящий за Вашей базой данных. В конечном счете Вы перерастете единственный сервер. Во-первых, Вы, вероятно, добавите поля более фронтэнда, все поддержанные сервером единой базы данных. Затем Вы оказываетесь перед необходимостью начинать распределять свою нагрузку базы данных вокруг, вероятно, sharding. Для превосходного обзора этого процесса роста посмотрите эту презентацию Живого Журнала
Для более всестороннего взгляда на большую часть вышеупомянутого, выезд, Создающий Масштабируемые веб-сайты, Cal Henderson, известности Flickr. Google имеет части в наличии книги для предварительного просмотра
Я использовал MysqlTuner для анализа производительности моих mysql серверов и, учитывая хорошее понимание дальнейших проблем для поиска с помощью Google, а также предоставления его собственных рекомендаций
Ресурс, который Вы могли бы найти полезным, является набором YDN правил производительности.
Не забывайте то, что Ваши пользователи будут тысячами миль далеко от Вашего сервера и загрузки десятки файлов для рендеринга единственной страницы. Та задержка и издержки рендеринга страницы в их браузерах могут быть больше, чем количество времени, что Вы тратите сбор информации и генерацию страницы.
Посмотрите страницы в Сети разработчиков Yahoo о Лучших практиках для Ускорения Вашего веб-сайта и инструмента YSlow для наблюдения, какая часть загрузки сайта занимает время.
Не забывайте выключать atime для своей файловой системы!
Я рекомендовал бы запуститься с http://highscalability.com/
Что касается Ваших предложений:
Сжатие для изображений, определенно нет. Тип настройки файловой системы, да, который мог иметь некоторый эффект, но минимальный. Но на самом деле лучшее должно использовать обратный прокси в оперативной памяти или еще лучше CDN.
Поскольку Apache в основном только загружает модули, Вам нужно. Не загружайте ничто больше. Как с PHP можно только использовать разветвление MPM, важно сохранить это тонким. Что касается оптимальных настроек, хорошо необходимо точно настроить их к определенному приложению, аппаратные средства и т.д. Если у Вас есть достаточно ЦП, это рекомендуемо, что Вы используете mod_deflate. Быстрее сервер может отправить данные клиенту, быстрее это может начать обрабатывать следующий запрос.