У нас есть сервер с 8 ядрами, 16 ГБ ОЗУ и дисками RAID 0 SAS 10K. Наша цель - использовать это для быстрого обслуживания довольно простого php-приложения. Мы протестировали все остальные компоненты и думаем, что сузили его до apache, который является нашим узким местом.
Я не гуру apache. Я провел небольшое исследование и протестировал пару вещей, но когда я тестирую с JMeter, запускающим 100 одновременных подключений к серверу, первые 10-20 быстро возвращаются через 30-100 мс, а остальные занимают от 1000 до 3000 мс. У кого-нибудь есть идеи, что изменить в нашей конфигурации apache, чтобы сделать это быстрее, прямо сейчас это обычная установка apache.
Вы абсолютно уверены, что Apache является для вас настоящим узким местом? Вы ничего не сказали о своем «довольно простом приложении PHP», но для меня это звучит так, как будто оно использует некоторую базу данных и довольно скоро начинает замедлять работу во время теста.
Традиционные значения Apache, которые следует учитывать при настройке, - это MaxClients, ServerLimit, MinSpareServers, MaxSpareServers и TimeOut. Но в большинстве случаев настройка этих значений наиболее полезна для статического контента; PHP и другие динамические вещи более непредсказуемы с точки зрения Apache. Если PHP-скрипт запускается за пять секунд и потребляет 100% ЦП, то запуск занимает пять секунд и потребляет 100% ЦП, никакая настройка Apache не поможет.
Какой дистрибутив Linux вы используете?
С таким мощным сервером, как у вас, Apache должен легко обслуживать тысячи и тысячи HTTP-запросов в секунду со статическим содержимым; с PHP число может быть намного меньше.
Сначала мы должны попытаться определить, в чем проблема, вы сказали, что хотите использовать этот сервер для обслуживания «довольно простого приложения php» !?
Что вы в основном делаете довольно простым, используете ли вы какую-либо базу данных? Если да, вам следует проверить, оптимизированы ли ваши запросы (например, в mysql вы можете включить логгер slow_query, посмотрите на эту страницу: http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html)
Вы также можете проверить, сколько времени ваш интерпретатор php тратит на создание вашей веб-страницы (в зависимости от того, что делают ваши скрипты php). Хорошая идея для улучшения среднего времени «выполнения» скрипта php без особых усилий - использовать apc (введите описание ссылки здесь), проверьте, установлен ли он вашим менеджером пакетов (если вы его используете).
А как насчет вашего теста, вы делали его на статическом контенте или на своих php-страницах? Не могли бы вы дать больше информации о своей архитектуре ?! Есть много способов улучшить приложения php / apache, но нам нужна дополнительная информация :-) о вашем случае
Установите кэширующий обратный прокси-сервер между веб-сервером и пользователями, это дает дополнительное преимущество в виде повышения безопасности (при условии правильной настройки)
Кальмар
Очень хорошо, но немного сложно для понимания, но если вы хотите доить каждую секунду времени, затраты времени того стоят.