我发现这个微软涵盖了Windows 2008/Vista操作系统的推荐事件日志设置最大值建议的最大容量为4GB,并且看到了至少在2008年的R2中不推荐大于4GB的事件日志的一些模糊引用,但是我想知道如果事件日志超过这个大小会发生什么呢?
我在一台测试服务器(2012年R2)上超过了这一点,也没有注意到任何像高内存使用率等问题。在2008年之前,我们不关心OSes,但是我们想要一个大日志,因为我们通过Windows转发从许多机器收集事件,并且希望将所有事件放在一个地方。
发布于 2018-08-03 13:19:47
现实世界中的例子:我们有这样的情况,安全日志被增加到12 We大小,允许每个遵从性要求保留6个月。
到第三个月,我们无法登录到服务器2008r2和2012r2服务器。登录将卡在“欢迎”屏幕上。我们试图将服务器内存增加到20 We,以适应正在打开的大型文件,而服务器仍然很生气。最后,我们决定遵循manage的建议1GB,并调整它以存档旧文件时,完全还是覆盖。
如果我们需要这个脚本,我们可以清理180天以上的旧文件,但是我们很可能只是将文件保存在适当的位置。
get-childitem -Path "C:\Windows\System32\winevt\Logs" |
where-object {$_.LastWriteTime -lt (get-date).AddDays(-180)} |
remove-item –whatif发布于 2022-12-22 16:46:38
有很多报告(1、2、3.)表明,即使在Windows / Server 2008及以后,如果设置的最大大小太高,“经典”事件日志(应用程序、安全性、系统等)仍然会导致内存耗尽--似乎它们仍然是“内存映射”。
而微软可能会说在他们关于这个主题的文件中在他们关于这个主题的文件中:
Windows和Windows 2008使用新的事件报告基础结构,并且不显示以下段落中描述的行为。
在测试中,这似乎只适用于Windows中引入的新的“Windows”和“Windows的事件跟踪”日志--关于Get-WinEvent和获取-事件日志 cmdlet的以下文档表明,“经典”日志可能仍然运行在旧的技术上:
Get-WinEvent cmdlet从事件日志(包括经典日志,如系统日志和应用程序日志)获取事件。cmdlet从Windows Vista中引入的Windows事件日志技术生成的事件日志和事件跟踪为Windows (ETW)生成的日志文件中获取数据。默认情况下,Get-WinEvent按最新到最老的顺序返回事件信息。包含PowerShell名词的EventLog cmdlet仅在EventLog经典事件日志(如应用程序、系统或安全性)上工作。若要获取在Windows和以后的Windows版本中使用Windows事件日志技术的日志,请使用get。
即使在Windows 11上运行此PowerShell cmdlet也表明,应用程序、安全性和系统事件日志等仍然以“经典”模式运行,这可能解释了重新部署的行为。
Get-WinEvent -ListLog * | Sort-Object LogName | Select-Object -Property
LogName IsClassicLog
------- ------------
Application True
ForwardedEvents False
HardwareEvents True
Internet Explorer True
Key Management Service True
Microsoft-AppV-Client/Admin False
Microsoft-AppV-Client/Operational False
...
Security True
...
System True您可以使用Sysinternals工具(7)检查“映射文件”使用了多少空闲内存。在“文件摘要”页面下,您可以看到几乎所有的安全事件日志都在活动内存中:

因此,尽管>4GB的限制不再适用于x64服务器,但似乎许多人已经发现,即使在较新的操作系统上,“经典”事件日志(特别是安全事件日志)的大尺寸也可能耗尽空闲内存,因为这些事件日志仍然是“内存映射”,并且减少了日志的最大大小&清除日志解决了问题。所以,在设置过高之前要小心。
https://serverfault.com/questions/671116
复制相似问题