IIS 内存溢出(32位程序运行)
背景
最近新接手了一个项目,服务器正常,用户量也没有变化,不定时出现内存溢出,重启iis或者回收线程就正常了
review发现,因为业务原因缓存的东西并没有释放掉,但远远没有达到服务器内存上线,也没有受到预警邮件
巴拉很久,发现32位系统存在内存上限
为什么 32 位程序只能使用最大 2GB 内存: Link
32 位寻址空间只有 4GB 大小,于是 32 位应用程序(进程)最大只能用到 4GB 的内存。 然而,除了应用程序本身要用内存,操作系统内核也需要使用。 应用程序使用的内存空间分为用户空间和内核空间,每个 32 位程序的用户空间可独享前 2GB 空间(指针值为正数),而内核空间为所有进程共享 2GB 空间(指针值为负数)。 所以,32 位应用程序实际能够访问的内存地址空间最多只有 2GB
怎么判断应用是32位
1.看项目生成的时候是否选中:32位 2.IIS管理器 / 应用程序池 / 选择所需的应用程序池 / 高级设置 / 启用32位应用程序 3.任务管理器,查看w3wp.exe。如果它显示为w3wp*32.exe,那么它就是32位的
Reference
Visual Studio编译出的程序,以32位模式运行的问题与解决如何检查IIS是处于32位模式还是64位模式
32位应用程序如何使用大于2GB的内存?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-04-21 IIS 分配读写权限