Apache 2.4 mod_cache + mod_cache_disk + modjk: 304 не изменен, но длина содержимого изменена

Я схожу с ума от mod_cache!

Моя текущая настройка:

Apache 2.4 на Ubuntu с:
- mpm_worker
- mod_jk
- mod_cache
- mod_cache_disk
- mod_expires
- mod_deflate

HTTP и HTTPS-запросы уравновешиваются modjk до 5 Tomcat AppServers. Я хочу кешировать медиаресурсы, обслуживаемые экземплярами Tomcat, но у меня возникают проблемы с mod_cache.

Моя текущая конфигурация кеша:

    CacheRoot /srv/volatile/cache
    CacheDirLevels 3
    CacheDirLength 2
    CacheEnable disk /medias

    # Currently active:
    CacheQuickHandler off
    CacheLock on
    CacheLockPath /tmp/mod_cache-lock
    CacheLockMaxAge 5
    CacheIgnoreHeaders Set-Cookie

    # This is another configuration i tried:
    #CacheIgnoreNoLastMod On
    #CacheIgnoreCacheControl On
    #CacheIgnoreQueryString On
    #CacheIgnoreHeaders Set-Cookie

Я проверил много учебников и руководств, но безуспешно.

Apache получает первый запрос в порядке, следующий запрос завершается ошибкой со странными ошибками:

Recalled cached URL info header https://...
Recalled headers for URL https://...
Adding CACHE_SAVE filter for /medias...
Adding CACHE_REMOVE_URL filter for /medias...
cache: /media... responded with an uncacheable 304, retrying the request. Reason: contradiction: 304 Not Modified, but Content-Length modified
cache: Removing url https://
Deleting /srv/volatile/cache/.../.header from cache.
Deleting /srv/volatile/cache/.../.data from cache.
Deleting directory /srv/volatile/cache/.../7n from cache.
URL https://... failed the size check (0 < 1)

Я подумал, что это может быть проблема с балансировкой нагрузки из-за обхода нескольких узлов или чего-то в этом роде, но поведение не является детерминированным. Тесты с использованием apache-bench & jmeter показали, что 60-70% запросов были неудачными, так что не каждый X-запрос не удался.

Если установлена ​​опция CacheIgnoreCacheControl On, запросы бросили jmeter и apache-bench не удалось, но доступ через браузер не прошел.

У кого-нибудь есть идеи?

Спасибо таулант

2 ответа

Я думаю, что это покрыто ошибкой mod_cache 56881, которая исправлена ​​в Apache 2.4.11.

Причина этого находится за этой линией:

      responded with an uncacheable 304, retrying the request. Reason: contradiction: 304 Not Modified, but Content-Length modified

Ваш сервер правильно отвечает на ответ 304, но неправильно отвечает на заголовок Content-Length, возможно, с нулевым значением.

Другие вопросы по тегам