%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0%20%D0%BD%D0%B0%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5%20Apache%2C%20%D0%BE%D0%B1%D1%81%D0%BB%D1%83%D0%B6%D0%B8%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%BC%20%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%20%D1%81%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20IP-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2.png)
Мы используем сервер 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 минут — это очень долгое время ожидания для сервера, но еще более безумно, когда клиент ждет так долго.