服务器出现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发现内存没在出现泄漏;