Компилируйте Apache с как можно меньшим количеством модулей. Перед компилированием, отредактируйте файл /apache_1.x.x/src/Configuration, добавьте комментарий »#» перед каждой строкой начинающейся с «AddModule», которые вам не нужны. Ставьте комментарий в начале каждой строки перед «LoadModule» в httpd.conf, если вы не собираетесь использовать указанные модули.
Отключите ExtendedStatus, кроме тех случаев, когда вы на самом деле занимаетесь отладкой. То же самое надо сделать и с mod_info. Apache потребуется время, чтобы вычислить и записать всю отладочную информацию, если они включены, что не отражается благополучно на остальных процессах.
Для директивы “Hostnamelookups” укажите значение «Off» (для сервера Apache версий 2.x.x это значение указано по умолчанию). Если директива включена (т.е. ей присвоено значение «On»), то при каждом запросе к серверу вызывается поиск его
DNS адресов - такая функция не является необходимой для большинства серверов.
Для достижения максимальной производительности без использования защиты символьных ссылок (symlink) добавьте директиву FollowSymLinks и удалите директиву SymLinksIfOwnerMatch, если она имеется. Если последняя директива включена, при каждом запросе сервер Apache запускает функцию lstat() (результаты выполнения которой не кэшируются). Представьте, что при 1000 запросах в минуту, сервер должен за это же время выполнить дополнительно 1000 команд!
Поставьте «MaxClients 128» или выше для более загруженных веб сайтов. Это позволяет большему количеству процессов запускаться по отдельности и предотвращает разбивание цепочки процессов. Чтобы выяснить лучшее значение, не ставьте его выше, чем ваш доступный RAM, основываясь на следующей формуле: 8М*(настройка).Если у вас 1Гб оперативной памяти, 8Мб*128=1024. Вы можете выбирать между 2 и 8ГБ памяти на каждый запрос клиента.
Для максимальной производительности поставьте AllowOverride None в httpd.conf. Есть побочный эффект - она отключает .htaccess файлы. Иначе - Apache пытается сделать просмотр .htaccess в каждой директории и родительской директории рекурсивно, независимо от того, есть ли он там.
Настройка MaxRequestPerChild контролирует создание процесса, и по умолчанию она стоит на 30. Если вы не используете скрипты, которые сильно загружают память, вы можете спокойно ставить значительно большее значение, к примеру 1000 или 10000. Если в основном вы обслуживаете статичные страницы, вы можете спокойно повышать это значение без возникновения каких-либо проблем.
Значение в 15 секунд по умолчанию для KeepAliveTimeout - это попытка не обрывать соединение с компьютером, посылающим запрос серверу раз в 15 секунд, в случае, если другой запрос достигнет сервера с этого компьютера для другого файла (например, картинки с ссылками). Если вы используете пути вместо ссылок или картинок, только один запрос будет сделан к серверу на страницу. Таким образом, процесс не будет ничего делать перед тем, как завершиться, через 15 секунд. На большинстве сайтов вы можете уменьшить это значение до 2 секунд и получить улучшение в скорости. Побочное действие это опции - TCP/IP overhead, однако, он минимален в настоящее время.