log4j2性能很高,但需要正确使用。
低效方式:打印信息时,把全部参数连接为一个字符串作为参数
logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
高效方式:不同参数按方法参数传递给logger
logger.debug("Entry number: {} is {}", i, entry[i]);
二者性能差别很大。具体参见https://logging.apache.org/log4j/log4j-2.2/performance.html
最好的方式是增加debug开关。
if(logger.isDebugEnabled() { logger.debug("Entry number: " + i + " is " + entry[i].toString()); }
今天run storm topology时,一个有35个并发的bolt增加了一个每分钟打印,却导致影响其他bolt产生的结果。怀疑是打印占用资源,导致整体性能下降。