resin切换日志消耗过大
最近Resin服务器总是在晚上0点负载很高,影响了正常的使用。持续时间少则几分钟多则几十分钟,便会自行恢复。当前resin版本为3.1.9 ,目前服务器上resin.conf的日志配置一般是:? <log name="" level="info" path="stdout:"
?????? timestamp="[%H:%M:%S.%s] {%{thread}} "/>
??????? <stderr-log path='/data/logs/resin/stderr.log' rollover-period='1D'/>
??????? <stdout-log path='/data/logs/resin/stdout.log' rollover-period='1D'/>
?
在这种情况下,日志始终是先输出到logs/stdout.log这样的固定文件里,每天0点,resin先 锁住所有写日志操作,将文件的内容复制到文件名带时间戳的文件里,再清空当前日志文件的内容。既多增加了磁盘io操作,也因为锁机制导致线程容易满,以至 resin被webapp监控重启。
解决方案是在输入日志时,直接输出到带日期后缀的文件中,避免了统一的日志切换操作,
如下所示:
? <log name="" level="info" path="stdout:" timestamp="[%H:%M:%S.%s] {%{thread}} "/>
??????? <stderr-log path-format='/data/logs/resin/stderr.log.%Y%m%d' rollover-period='1D'/>
??????? <stdout-log path-format='/data/logs/resin/stdout.log.%Y%m%d' rollover-period='1D'/>
?
?