电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2857|回复: 0

服务器无法通过系统非页面共享区来进行分配,因为共享区当前是空的解决办法

[复制链接]
admin 发表于 2010-9-6 17:46:47 | 显示全部楼层 |阅读模式

例子一:最近服务器出现了如下的系统错误日志(系统win 2000srv):

服务器无法通过系统非页面共享区来进行分配,因为共享区当前是空的

产生这个日志之后的一段时间会出现机器濒死的状况,打开程序或者我的电脑等程序时会提示:磁盘配额不足,无法打开的报错。

而机器重新启动之后会又会转好,一段时间之后又会发生

问题分析:

“服务器无法通过系统非页面共享区来进行分配,因为共享区当前是空的 ”其中的‘非页面共享区’也就是 nonpagepool,导致这个发生的原因是由于内存泄漏

内存泄漏又是由于应用程序或进程分配占用内存,但是完成之后却不释放内存,而导致内存存满而漏

是什么程序占用内存而不释放呢?

本人的个案是,由于服务器中某程序一直访问TCP一不存在的端口而导致占用内存而不释放。查了一下网上各网友的问题留言,其他人的大致可能也是这个原因

解决方案:

内存泄漏的根本,找到出错程序修改程序

其次,可以通过修改注册表而使内存占用达到一个较低程度是去整理内存,系统默认是内存达到80%时整理内存,可以手工修改注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

添加DWORD         PoolUsageMaxium 值为十进制的40,修改为50也可以 视不同情况而定

例子二:非页面共享区是空的通过优化内存管理器,使它在更早的时间(比如当它达到 40% 时)开始修整过程 ,在突发的高峰使用期间就可以满足页面缓冲池的需求,并避免页面缓冲池内存不足的情况。以下优化建议在减轻此问题方面很有帮助: 1. 启动注册表编辑器(Regedt32.exe)。 2. 在注册表中找到并单击以下注册表项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\Memory Management3. 在编辑菜单上,单击添加数值,然后添加下面的注册表值: 数值名称:PoolUsageMaximum数据类型:REG_DWORD基数:十进制数值数据:40 将该值设置为 40 可以通知内存管理器在达到 PagedPoolMax 的 40% 而不是默认设置 80% 时开始修整过程。 数值名称:PagedPoolSize数据类型:REG_DWORD基数:十六进制数值数据:0xFFFFFFFF 将 PagedPoolSize 设置为 0xFFFFFFFF (-1) 可为计算机分配最大的页面缓冲池以取代其他资源。 4. 退出注册表编辑器。

您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-11-27 11:47 , Processed in 0.097013 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表