org.apache.catalina.webresources.Cache.backgroundProcess The background cache eviction process was unable to free [10] percent of the cache for Context [/filestore] - consider increasing the maximum s


需要耐心啊,太急於求成,希望直接就得到解決方法了...以至於正確方法都已經出現了,我卻沒有耐心看下去,所以反而又耽誤了不少時間....

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

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-to

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

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

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

背景資料

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

加載webResource時,代碼會計算緩存的新大小。如果計算的大小大於默認的最大大小,則必須刪除一個或多個緩存的條目,否則新大小將超過最大值。因此代碼將計算“targetSize”,這是緩存希望保持的大小(作為最佳值),默認情況下為95%。為了達到此targetSize,必須從緩存中刪除/逐出條目。

因此,當其TTL過期且尚未達到targetSize時,將刪除緩存條目。

在嘗試通過逐出緩存條目來釋放緩存之后

因此,如果在嘗試釋放緩存后,大小仍然超過最大值,它將顯示有關無法釋放的警告消息:

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" />

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM