服务器出现504超时,查log发现有线程锁在LOG4J里面,查看LOG4J的配置,里面把所有的LOG都打印了处理(log4j.rootLogger=ERROR,stdout,fileLog,fileErr和HIBERNATE的debug LOG都输出了),后修改删除不必要的输出,和更新LOG4J的版本(由1.2.15-1.2.17),服务器并发能力明显改善。
但过了几天又出现504,发现内存泄漏,检查代码发现用了XSTREAM,
错误代码:
XStream siteUpdateStream = new XStream(new StaxDriver(new NoNameCoder()));
siteUpdateStream.autodetectAnnotations(true);
siteUpdateStream.alias("root", BaseinfoSiteUpdateInput.class);
发现在方法里面每调用一次,服务器的持久带内存都会增加,而且并发量越大内存消耗越快导致服务器504.
后修改:
private static XStream carrierDelStream = new XStream(new StaxDriver(new NoNameCoder()));
改成静态变量,并修改JAR的版本号com.thoughtworks.xstream1.44改为1.48发现内存没在出现泄漏;
时间: 2024-11-03 03:27:31