Apache 2.4 mod_cache + mod_cache_disk + modjk:304未修改,但内容长度已修改

时间:2016-03-23 17:06:36

标签: apache caching mod-jk apache2.4 mod-cache

我对mod_cache感到疯狂!

我目前的设置:

Ubuntu上的Apache 2.4: - 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)

我认为它可能是一个负载平衡问题,因为walk会抛出多个节点或类似的东西,但行为不是确定性的。使用apache-bench&amp; amp;测试jmeter向我展示了60-70%的请求失败,因此并非每个X请求都失败。

如果设置了 CacheIgnoreCacheControl On 选项,请求会抛出jmeter&amp; apache-bench没有失败,但是访问丢失了浏览器。

有人有什么想法吗?

由于 Taulant

1 个答案:

答案 0 :(得分:0)

我认为,这由mod_cache bug 56881涵盖,已在Apache 2.4.11中修复。