org.apache.catalina.webresources.Cache.backgroundProcess The background cache eviction process was u

須要耐心啊,太急於求成,但願直接就獲得解決方法了...以致於正確方法都已經出現了,我卻沒有耐心看下去,因此反而又耽誤了很多時間....web

項目加載100+張圖片,還有一個小的MP4,因此console警告緩存不夠apache

org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [/base/1325/WA6144-150x112.jpg] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache

The background cache eviction process was unable to free [10] percent of the cache for Context [/liuda] - consider increasing the maximum size of the cache. After eviction approximately [11,145] KB of data remained in the cache

反正就是緩存不夠了緩存

http://stackoverflow.com/questions/26893297/tomcat-8-throwing-org-apache-catalina-webresources-cache-getresource-unable-totomcat

上面連接是stackoverflow上出現的和我同樣的錯誤,第二個答案成功的解決了這個警告,就是把緩存弄大點。一開始沒耐心看答案,直接把代碼加進server.xml了,正確的應該是加到context.xmlapp

<Resources cachingAllowed="true" cacheMaxSize="100000" />

做者:我比風更自由
來源:CSDN
原文:https://blog.csdn.net/qq_26684469/article/details/52346667
版權聲明:本文爲博主原創文章,轉載請附上博文連接!ide

背景資料

一個WebSource是在Web應用程序中的文件或目錄。出於性能緣由,Tomcat能夠緩存WebSource。默認狀況下,靜態資源緩存(總共全部資源)的最大值爲 10240千字節(10 MB)。在請求webResource時(例如,在加載靜態圖像時),webResource被加載到緩存中,而後將其稱爲緩存條目。每一個緩存條目都有一個TTL(生存時間),這是容許緩存條目保留在緩存中的時間。當TTL過時時,緩存條目有資格從緩存中刪除。cacheTTL的默認值爲5000毫秒(5秒)。性能

加載webResource時,代碼會計算緩存的新大小。若是計算的大小大於默認的最大大小,則必須刪除一個或多個緩存的條目,不然新大小將超過最大值。所以代碼將計算「targetSize」,這是緩存但願保持的大小(做爲最佳值),默認狀況下爲95%。爲了達到此targetSize,必須從緩存中刪除/逐出條目。spa

所以,當其TTL過時且還沒有達到targetSize時,將刪除緩存條目。.net

在嘗試經過逐出緩存條目來釋放緩存以後日誌

所以,若是在嘗試釋放緩存後,大小仍然超過最大值,它將顯示有關沒法釋放的警告消息:

cache.addFail=Unable to add the resource at [{0}] to the cache for web application [{1}] because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache

問題

所以,正如警告信息所述,問題是

insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache

若是您的Web應用程序在短期(5秒)內加載了大量未緩存的webResources(大約最大緩存,默認爲10mb),那麼您將收到警告。

當Tomcat 7沒法釋放緩存時,它根本不會輸出任何警告,而Tomcat 8將輸出警告。

所以,若是您使用的Tomcat 8具備與Tomcat 7相同的默認緩存配置,而且您在Tomcat 8中收到警告,那麼Tomcat 7的(和個人)緩存設置在沒有警告的狀況下表現不佳。

解決方案

有多種解決方案:

  • 增長緩存(推薦)
  • 下降TTL(不推薦)
  • 禁止緩存日誌警告(不推薦)
  • 禁用緩存

經過在Context元素中添加$CATALINA_BASE/conf/context.xml「XXXXX」表明增長的高速緩存大小,以kbytes爲單位。默認值爲10240(10 MB),所以請設置大於此值的大小。

<Resources cacheMaxSize="XXXXX" />

您必須調整以得到最佳設置。請注意,當您忽然增長流量/資源請求時,問題可能會再次出現。

相關文章
相關標籤/搜索