В основном я разработчик, но время от времени я перехожу на должность системного администратора. По большей части мне удалось избежать развертывания приложений php и python с помощью apache.
Я пишу сегодня, потому что я начинаю исследовать более быстрые альтернативы apache, но все еще имею некоторые из основных функций, которые мне требуются, такие как методы размещения и удаления и возможность подключения к сокету через apache. (Это я не пробовал, но может быть хорошим свистком, если я когда-нибудь использую комету в своих приложениях.) Как вы, наверное, догадались, я использую javascript исключительно для всех своих веб-сайтов, используя глубокие ссылки для поддержки SEO.
Основные области, в которых я хочу повысить производительность, - это связь между приложениями django и веб-сервером с ответом клиента. Каждый день я изо всех сил стараюсь сохранить как можно меньший отпечаток памяти, однако я дохожу до конца, когда дело доходит до работы с apache.
В общем, имейте в виду, что я только начинаю это исследование, поэтому сейчас я ищу больше материалов для чтения, чем решения.
Мои основные вопросы:
Как вы размещаете приложения WSGI? Предполагая, что вы используете mod_wsgi, применимы следующие комментарии.
Вы используете nginx для статических файлов и в качестве прокси для Apache / mod_wsgi? Это хорошее начало, так как оно дает различные преимущества, помимо лучшего обслуживания статических файлов. В частности, nginx изолирует Apache от медленных HTTP-клиентов и позволяет Apache появляться только тогда, когда готов полный запрос от клиента. Дополнительная буферизация в рамках прокси-сервера также позволяет Apache быстрее выгружать ответ. Все это позволяет Apache работать с меньшим количеством процессов / потоков и работать более эффективно.
Помимо этого, для mod_wsgi вам действительно следует объяснить свою конфигурацию. Вы используете встроенный режим или режим демона? Какой Apache MPM вы используете? Вы запускаете PHP в том же Apache, используя mod_php? Вы уверены, что все еще не загружаете mod_python в Apache?
Хотя я не являюсь экспертом по Python mod_wsgi, мне хотелось бы думать, что я немного разбираюсь в веб-архитектуре и PHP в частности.
Однако IME, интерфейс веб-сервера / модуля, который вы сейчас рассматриваете, должен иметь очень небольшое влияние на общую обработку веб-страницы. Если у вас есть ферма серверов, то может быть некоторая выгода в обслуживании статического контента через другую платформу (nginx, tux) или даже лучше - используйте CDN. Но с парой серверов или меньше - запуск дополнительных веб-серверов сделает использование ваших ресурсов менее эффективным - не более.
Конкретное направление того, как ускорить работу вашего сайта, потребует большого количества данных о том, как ваш сайт в настоящее время ведет себя и где находятся ваши пользователи - и это выходит за рамки публикации здесь.
Я бы порекомендовал книгу Стива Судера о высокопроизводительных веб-сайтах.