原创

【Tomcat】Tomcat 8 缓存不足问题解决方案

前言

运维的tomcat服务升级了下,结果报错

01-Nov-2024 14:31:47.703 WARNING [main] org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [/WEB-INF/classes/views/3_desc.ftl] to the cache for web application [/xxxserver] because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
09-Nov-2024 15:15:32.871 警告 [main] org.apache.catalina.webresources.Cache.getResource 无法将位于[/WEB-INF/classes/views/1_desc.ftl]的资源添加到Web应用程序[/xxxserve]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间。

原因

Tomcat 服务器在处理大量 HTTP 请求时,如果缓存设置不当,可能会导致缓存不足的警告。这个问题通常发生在缓存条目尚未达到其生存时间(TTL)就被频繁访问,导致 Tomcat 无法释放足够的缓存空间来存储新的请求资源。在 Tomcat 7 中,这个问题可能没有被明显地暴露出来,因为 Tomcat 7 在这种情况下不会输出警告,这可能导致用户在不知情的情况下使用不合适的缓存设置 。

快速解决

先查看tomcat的CATALINA_BASE路径。
一般在日志中能显示:

01-Nov-2024 14:31:45.016 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA\_BASE:         /home/ya/tomcat/tomcatadmin

可见,路径是/home/ya/tomcat/tomcatadmin

修改$CATALINA_BASE/conf/context.xml

增加配置

<!-- The default value is 10240 kbytes, even when not added to context.xml.
So increase it high enough, until the problem disappears, for example set it to 
a value 5 times as high: 51200. -->

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

这里的单位是kb
即可解决

扩展阅读

可通过直接将缓存禁用解决该问题(不推荐)

来源

Tomcat 8 throwing - org.apache.catalina.webresources.Cache.getResource Unable to add the resource

The Resources Component

本文来自:【Tomcat】Tomcat 8 缓存不足问题解决方案-小码农,转载请保留本条链接,感谢!

温馨提示:
本文最后更新于 2024年11月11日,已超过 24 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
本文目录