记录172.23.24.14服务宕机优化的过程:
接收到服务器宕机的短信,马上登录服务器查看
1.马上复制项目web/web-info/log下的日志文件到本地
2.复制tomcat的日志到本地
3.马上重启服务
步骤二:
1.查看项目web/web-info/log下的日志,发现报错
--java.lang.IllegalStateException: The tmpCache Cache is not alive
--removeCache$page.time.-8644669765708141109@@@@@@page.time.-8644669765708141109从缓存中删除值失败!
[ERROR] 2021-12-31 21:09:36,092 method:jos.framework.cache.impl.EhcacheImpl.remove(EhcacheImpl.java:91)
--java.lang.IllegalStateException: The localSessionCache Cache is not alive (STATUS_SHUTDOWN)
看到这里比较好奇,tmpCache哪里来的,干啥的,不着急,马上本地全局搜索tmpCache,再搜索localSessionCache,具体配置如下
<!--默认临时cache,一般上存储枚举值,过期时间10分钟 -->
<cache name="tmpCache" class="jos.framework.cache.impl.EhcacheImpl" storePolicy="LRU" maxElements="10000" expiredInterval="600"/>
<!--默认本地sessioncache -->
<cache name="localSessionCache" class="jos.framework.cache.impl.EhcacheImpl" overflowToDisk="true" storePolicy="FIFO" maxElements="30000" expiredInterval="5400"/>
嗯,发现一个比较有意思的问题,这2个对象全部由EhcacheImpl对象创建。因为本人年级比较大,见得比较多,看到EhcacheImpl就知道是用的Ehcache缓存,
而Ehcache绝大部分情况下用的jvm内存存储数据,那我就猜测可能是OOM了,马上去看tomcat日志,果然如此,再看tomcat的jvm内存配置,竟然还是默认配置,心想哪个XX配置的,马上根据服务器的实际内存情况,将最大内存调整为8*1024*0.7=5734M
ehcache地址:https://www.cnblogs.com/tongcc/p/11269339.html