Мы используем сервер Apache 2.2 для очень большого веб-сайта. За последние несколько месяцев некоторые пользователи сообщали о медленном времени отклика, в то время как другие (включая наши ресурсы, как во внутренней сети, так и в домашних сетях) не видят никакого ухудшения производительности.
После тщательного расследования мы наконец нашли в нашей конфигурации оператор «Deny from none», который вызывал обратные запросы DNS (которые истекали по времени), что решило большую часть наших проблем, но у нас все еще есть некоторые клиенты, которых мы видим в журналах Apache (используя %D в формате журнала) со временем обработки запросов > 300 с для изображений, css, javascript и другого статического контента.
Мы проверили все операторы Deny/Allow на предмет повторного появления «none», а также все другие известные нам вещи, которые могли бы вызвать обратный поиск DNS (например, использование «REMOTE_HOST» в правилах перезаписи, использование %a вместо %h в нашей конфигурации формата журнала), а также убедились, что HostnameLookups установлен на «Off».
Кстати, мы также убедились, что обратные DNS-запросы для людей, столкнувшихся с этой проблемой, не истекают по времени, поэтому я почти уверен, что DNS в данном случае не является проблемой.
У меня закончились идеи. Есть ли какие-то сценарии конфигурации Apache, на которые кто-нибудь может мне указать, которые я мог упустить, и из-за которых время запроса статического контента может быть таким долгим только для определенных пользователей?
Заранее спасибо.
решение1
Когда я нахожу что-то подобное, я первым делом проверяю:
- DNS. Используйте сетевой дамп, например,
tcpdump
илиwireshark
для проверки этого, а не просто смотрите на файл конфигурации. Если вы уверены, что проблема не в этом, - Как выглядят traceroute / ping для этих пользователей? Есть ли у них что-то общее на их конце? Я видел, как плохой NAT-бокс вызывал бесконечные огорчения. Я также видел, как локальный трафик пользователя заставлял мой сайт казаться медленнее, чем для других без загруженных соединений, но они ЗАМЕЧАЮТ, что мой сайт медленный.
- Брандмауэр/туннелирование. Они делают что-то глупое, например, блокируют все ICMP? Они на туннеле? Если да на оба вопроса, то, скорее всего, это тайм-аут обнаружения PMTU каким-то странным образом.
Обратите внимание, что время отклика в 300 секунд, вероятно, означает, что Apache отказался от них, а не то, что запрос был обработан. 5 минут — это очень долгое время ожидания для сервера, но еще более безумно, когда клиент ждет так долго.