我在NLog库中遇到此方法的问题: NLog.Targets.Wrappers.AsyncTargetWrapper.ProcessPendingEvents(object state)
它消耗了太多的CPU时间.我使用Nlog长期运行Windows服务,两天后我的服务消耗超过80%的CPU时间(一个核心几乎是80%,第二个30%).它不是100%的cpu时间,但它正在改变,并且在cca 2小时后它恢复正常.所以我运行了探查器,这个metod可能会导致它:NLog.Targets.Wrappers.AsyncTargetWrapper.ProcessPendingEvents(对象状态)
我有10个文件目标都被设置为异步.事实上我在我的应用程序中有很多日志记录,但只在级别Trace上,如果我切换到Info级别它没有帮助.
你能帮我吗,我应该减少我的应用程序中的日志记录吗?
根据这个线程,我还猜测为timeToSleepBetweenBatches设置更高的数字应该会减少高CPU时间.似乎NLog的2.0 beta应该通过一次只运行一个惰性写入程序线程来修复此行为.
同时,您无需更改源代码即可更改timeToSleepBetweenBatches.您可以在配置文件中进行设置:
<targets>
<target xsi:type="AsyncWrapper"
name="String"
queueLimit="Integer"
timeToSleepBetweenBatches="Integer"
batchSize="Integer"
overflowAction="Enum">
<target xsi:type="wrappedTargetType" ...target properties... />
</target>
</targets>
Run Code Online (Sandbox Code Playgroud)
缓冲选项
timeToSleepBetweenBatches - 批次之间休眠的时间(以毫秒为单位).Integer默认值:50
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |