需要耐心啊,太急於求成,希望直接就得到解決方法了...以至於正確方法都已經出現了,我卻沒有耐心看下去,所以反而又耽誤了不少時間....
項目加載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
反正就是緩存不夠了
上面鏈接是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" />
您必須調整以獲得最佳設置。請注意,當您突然增加流量/資源請求時,問題可能會再次出現。