评论

收藏

[IIS] 由注册表引起的 I/O 操作发生了不可恢复的错误修复方法

web服务器 web服务器 发布于:2021-11-03 15:25 | 阅读数:212 | 评论:0

服务器出现此问题:
很多使用Windows Server 2003系统的用户都会收到如下错误:
事件类型: 错误
事件来源: Application Popup
事件种类: 无
事件 ID: 333
日期: 2007-8-11
事件: 8:48:03
用户: N/A
计算机: LZ_YQ
描述:
由注册表引起的 I/O 操作发生了不可恢复的错误。 注册表将不能读取、写出或刷新包含注册表系统图像的其中一个文件。
然后系统失去响应,需要重新启动。
事件ID是333,英文日志为
Event Type: Error
Event Source: Application Popup
Event Category: None
Event ID: 333
Date: date
Time: time
User: N/A
Computer: computer name
Description: An I/O operation initiated by the Registry failed unrecoverably. The Registry could not read in, or write out, or flush, one of the files that contain the system's image of the Registry.
该错误原因是:在非分页内存或在分页的池内存不足暂时可能会出现此问题。 系统保留录制类事件,直到重新启动计算机时或相关的配置单元是卸载,即使在临时内存 insufficiency 停止。
请参看如下kb,由于该补丁处于测试阶段,因此需要通过邮件下载对应补丁:
https://support.microsoft.com/kb/970054
这问题主要是有内存耗尽出现的问题,请加大内存或者查找耗内存的元凶


服务器开始阶段性的出现死机状态了。隔一段时间就无法连接了。重启后正常,过一段时间又是同样的问题。

事件查看器中有大量的同样报错:
事件ID:2020
描述:服务器无法通过系统页面共享区来进行分配,因为共享区当前是空的。

事件ID:333
描述:由注册表引起的 I/O 操作发生了不可恢复的错误。 注册表将不能读取、写出或刷新包含注册表系统图像的其中一个文件。

尝试用以下方法解决这个问题,效果还有待观察:
1、启动注册表编辑器(开始->运行->Regedt32.exe)。
2、在注册表中找到并单击以下注册表项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\Memory Management
3、在编辑菜单上,单击添加数值,然后添加下面的注册表值(如果下面的注册表值已经存在,那么按照以下的参考值进行调整):
(1)、数值名称:PoolUsageMaximum
数据类型:REG_DWORD
基数:十进制
数值数据:40
将该值设置为 40 可以通知内存管理器在达到 PagedPoolMax 的 40% 而不是默认设置 80% 时开始修整过程。

(2)、数值名称:PagedPoolSize
数据类型:REG_DWORD
基数:十六进制
数值数据:0xFFFFFFFF
将 PagedPoolSize 设置为 0xFFFFFFFF (-1) 可为计算机分配最大的页面缓冲池以取代其他资源。

4、退出注册表编辑器。

后记(2011年7月28日):
按照以上进行调整以后,在第二天的早上,服务器照样出现死机状况。怀疑是不是服务器中毒了,进行查毒,发现服务器中毒了,清理病毒后,进行了数据库的重装。

后记(2011年7月30日):
服务器又挂掉了,网上了查了333问题,尝试按照https://support.microsoft.com/kb/970054进行处理。
第一步:下载安装补丁程序,要应用此修补程序,计算机必须安装有 Windows Server 2003 Service Pack 1 或 Service Pack 2。

微软官方下载378286_CHS_i386_zip.exe

本站下载378286_CHS_i386_zip

第二步:要启用此修补程序,请添加以下注册表项,然后将值设置为 1 或 2。
位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
名称:RegistryFlushErrorSubside
类型:REG_DWORD
数值:1 或 2
如果您将 RegistryFlushErrorSubside 注册表项的值设置为 1,则系统在发生临时内存不足时仅记录一次 333 事件。如果将该值设置为 2,则系统会触发 Stop 错误以进行诊断。

后记(2011年8月1日):
最后的解决办法,也是最无奈、最有效的解决办法。试了N种办法,都没法解决,以前好好的,怀疑是不是系统升级了什么补丁引起的问题,一怒之下,把6月份以后的系统补丁删个干净,结果世界安静了,服务器也不死机了。
关注下面的标签,发现更多相似文章