成长值: 252 签到天数: 4709 天
[LV.Master]伴坛终老
发表于 2019/1/24 05:43
|
显示全部楼层
| 阅读模式
| Google Chrome 71.0.3578.98
| Windows 10
实际上和desktop heap区关系不大,windows下限制同时打开文件视乎是512个还是2048个,Linux默认是1024个,基本上不是这些的问题。
主要是句柄,一般情况,,服务器超过7W句柄就会开始卡顿,8W就卡的不行了,这时候就修改它来解决。
微软官方介绍:
用户界面对象仅支持每个对象一个句柄。进程无法继承或复制用户对象的句柄。一个会话中的进程无法引用另一个会话中的用户句柄。
每个会话的理论限制为65,536个用户句柄。但是,每个会话可以打开的最大用户句柄数通常较低,因为它受可用内存的影响。用户句柄也有默认的每进程限制。要更改此限制,请设置以下注册表值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota
该值可以设置为200到18,000之间的数字。
GDI对象每个对象只支持一个句柄。GDI对象的句柄对进程是私有的。也就是说,只有创建GDI对象的进程才能使用对象句柄。
每次会话理论上限制为65,536个GDI句柄。但是,每个会话可以打开的最大GDI句柄数通常较低,因为它受可用内存的影响。
Windows 2000:每个会话限制为16,384个GDI句柄。
GDI句柄还有一个默认的每进程限制。要更改此限制,请设置以下注册表值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota
此值可以设置为256到65,536之间的数字。
Windows 2000:此值可以设置为256到16,384之间的数字。
根据参考资料显示,2003系统或者以上的都可以开到65535,16384仅为2000系统限制。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems
Windows值双击修改它
2016服务器默认,windows10也是一样,毕竟是相同内核,所以无需修改。
2003系统中默认值为Windows SharedSection=1024,3072,512,寻找这一段把他3072这个加大为8192即可。第二个意思是交换式,第三个是非交互式,也就是界面和没界面,单位为KB,等于说默认值系统20MB内存占用。
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16 复制代码
总结,GDIProcessHandleQuota值应该影响最大,直接开到65536,USERProcessHandleQuota也拉到微软介绍提示的最大允许值65536
不能超过这个65536值,否则按照默认10000运行。
什么,不会改还是嫌麻烦,,下载注册表一键修改GDIProcessHandleQuota和USERProcessHandleQuota
GDIProcessHandleQuota&USERProcessHandleQuota.reg
(484 Bytes, 下载次数: 220)