You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何解决Windows注册表编辑器引发的“增加可用的最大文件句柄数”问题?

如何解决Windows注册表编辑器引发的“增加可用的最大文件句柄数”问题?

刚碰到过一模一样的坑,折腾了小半天终于搞定,把亲测有效的步骤整理给你,都是开发者之间的实在经验👇

重要提醒:修改注册表有风险!操作前一定要备份整个注册表,或者至少要修改的分支,万一改崩了还能回滚,别拿生产机瞎试!

具体操作步骤

  1. 打开注册表编辑器
    Win + R弹出运行框,输入regedit回车就行,要是弹出UAC提示,点「是」授权。

  2. 定位到目标分支
    依次展开左侧导航树:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
    

    要是找不到Parameters这个子项?右键LanmanServer,选「新建」→「项」,命名为Parameters就行。

  3. 新建第一个关键值
    右键Parameters项,选「新建」→「DWORD(32位)值」,命名为MaxWorkItems
    双击它,选择「十进制」,输入65536(也就是64K,这个数值是大部分场景的安全上限,足够解决句柄不足的问题)。

    要是你用的是64位系统,也可以建「QWORD(64位)值」,名字和数值一样,效果没差。

  4. 新建第二个配合值
    同样在Parameters下,新建另一个DWORD(32位)值,命名为MaxMpxCt,十进制输入65536
    这个值是控制并发网络请求数的,和MaxWorkItems搭配改,能彻底打通句柄限制的瓶颈。

  5. 重启服务生效
    Win + X,选「Windows终端(管理员)」(老系统选命令提示符管理员),输入以下命令重启服务:

    net stop lanmanserver
    net start lanmanserver
    

    嫌重启服务麻烦的话,直接重启电脑也行,就是慢点儿。

  6. 验证效果
    跑你的应用测试就行,要是之前报“too many open files”类的错误,现在应该不会再出现了。也可以用tasklist /m命令查看进程的模块依赖,间接确认句柄数限制已经调高。

常见问题答疑

  • 为啥改这俩值?
    Windows默认的文件句柄上限很保守,尤其是服务器场景下,LanmanServer服务负责管理文件共享和大部分应用的句柄分配,这俩注册表项就是官方提供的调高上限的入口。
  • 数值能设更大吗?
    比如131072(128K)也可以,但别太离谱,太大的话会占用过多系统资源,反而拖慢机器。
  • 改了还是没效果?
    先检查是不是没重启服务/电脑,或者注册表路径写错了。要是还不行,可能是你的应用本身有自己的句柄限制,得去看应用的配置文件或者文档。

我当时就是因为Java应用一直报句柄不足,折腾了好久才找到是注册表的问题,改完之后稳得一批,要是有问题随时留言!

火山引擎 最新活动