AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 4720
In Process
Robin M
Robin M
Asked: 2009-05-06 06:22:16 +0800 CST2009-05-06 06:22:16 +0800 CST 2009-05-06 06:22:16 +0800 CST

IIS6 网站/应用程序池可以使用的最大内存是多少?

  • 772

我有一个在 Windows 2003 SP2 x86 上运行的 IIS 6 服务器。该服务器具有 4GB 的 RAM,并在分配 2GB 的情况下始终如一地运行。

我意识到使用 x86,服务器不会利用所有 4GB RAM,应用程序空间也有限,但 IIS 进程似乎在其他地方受到限制。w3wp.exe 分配的内存从未超过 500MB,而且我偶尔会从繁忙的 .NET 应用程序中得到 OutOfMemory 异常(有几个应用程序正在运行,每个应用程序都有一个单独的应用程序池)。

IIS6 网站/应用程序池可以使用的最大内存是多少?

performance windows-server-2003 memory iis debug
  • 6 6 个回答
  • 35334 Views

6 个回答

  • Voted
  1. sh-beta
    2009-05-06T06:48:28+08:002009-05-06T06:48:28+08:00

    Windows x86 下的应用程序限制为 2gb/ea。您可以通过将 /3gb 标志添加到 boot.ini 来更改此设置,但这可能会导致意外的应用程序行为,应谨慎使用。MS官方不支持这个(http://technet.microsoft.com/en-us/library/bb124810.aspx)

    IIS 的内存限制可以在相关应用程序池的回收选项卡下设置。

    您如何确定应用程序永远不会超过 500MB?如果您使用的是任务管理器,请记住,它很少(如果有的话)准确地表示 Windows 理解的内存使用情况。使用进程资源管理器: http ://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

    还有一些其他相关的问题:

    • 您的事件日志中是否记录了错误?
    • 它是抛出异常的特定代码行吗?如果是这样,这个 OutOfMemory 异常实际上是 IIS 问题,还是代码问题?
    • 您是否使用回收设置完全限制了您的应用程序池?
    • 这台机器上是否有其他服务正在运行?

    即使 Windows 任务管理器没有显示 IIS、ASP.NET 和所有相关的包,很可能都在运行 2GB 限制。设置回收限制或升级到 x64 可能会产生巨大的影响。

    • 7
  2. Portman
    2009-05-06T06:58:27+08:002009-05-06T06:58:27+08:00

    偶尔会从繁忙的 .NET 应用程序中获取 OutOfMemory 异常

    这个问题的答案太复杂了,无法回答。有关该主题的完整处理,请参阅“调整 .NET 应用程序性能”。

    这是Bruno Jouhier的一个非常简单(但仍然相当不错)的摘要:

    此外,.NET 运行时不允许您达到 2 GB。垃圾收集器通过复制活动对象来工作,因此它需要相当多的空间来执行其复制。

    编辑:

    这是我的解释尝试...

    如果您想知道 x86 上的 ASP.NET 工作进程的最大工作进程内存大小(由任务管理器报告)是多少,答案是“它取决于”。

    在任何类型的托管代码(如 Java 或 .NET)中,程序员都放弃了对内存的细粒度控制,以此作为对不必处理指针的惩罚。当程序执行时,垃圾收集器会定期清理堆和堆栈。

    特别是对于 ASP.NET,垃圾收集器在与网站相同的工作进程中运行。GC 消耗自己的内存。多少内存完全取决于应用程序代码的编写方式。一个应用程序可能能够使用 1.8GB 的​​内存,而另一个应用程序可能会阻塞 500MB。为了了解原因,您需要分析您的特定应用程序。

    • 3
  3. Steve Evans
    2009-05-06T06:33:44+08:002009-05-06T06:33:44+08:00

    x86 Windows 操作系统上的任何进程都限制为 2gb,除非您在 boot.ini 文件中设置了 /3gb 开关,在这种情况下,进程可以使用 3gb。

    • 2
  4. splattne
    2009-05-08T07:57:18+08:002009-05-08T07:57:18+08:00

    从此博客文章“SharePoint 应用程序池设置建议”:

    专注于物理上,我通常喜欢在 32 位应用程序上将应用程序池限制在最大 800MB 到 1200MB 左右,而应用程序池很少,具体取决于内存的数量和数量。在具有 2 GB RAM 的服务器上,我将其设置为最大 800MB 左右。在 4GB RAM 服务器上,大约 1GB 甚至更多,最大大约 1200。在具有 8-16 GB 内存的 64 位 Web 前端上,我听说过 2GB RAM 的设置,甚至允许它运行,而不是限制它。

    您确实需要对其进行分析,因为它们确实可以增长到处理和缓存。内存量越大,负载越大,工作进程就会增长得越高。当人们询问有关配置应用程序池的问题时,他们通常会问这些数字应该是多少。您在这里所做的是明确限制应用程序池消耗更多内存。请注意,此设置位于回收选项卡上,这是有原因的。

    当应用程序池达到最大值时,它不像最大处理器设置。它将循环工作进程,这就像一个微小的重新启动或类似于 iisreset,但不是因为有时我们希望这种情况发生,以便我们可以释放我们的内存。在理想的世界中,您真的不想每 24 小时循环几次以上。我听说有些人试图在早上高峰发生之前循环,以便他们拥有最多的可用内存,然后在一天结束前的备份或爬行开始之前循环。

    根据我的经验, 800 MB是 32 位机器(2-4 GB RAM)的门槛。它在抛出“内存不足”异常之前回收应用程序池。

    • 2
  5. Christopher_G_Lewis
    2009-05-21T20:14:13+08:002009-05-21T20:14:13+08:00

    确保您没有在应用程序池上设置虚拟内存大小。如果将此值设置为允许范围之外的数字,它将恢复为 512MB。请参阅KB923197。

    另请注意,如果您正在运行 ASP.Net 应用程序,ASP.Net 将以 2GB 内存限制的 60% 或 1.2 GB 回收池。这不是您的 ~500 方案,但是在具有大量内存使用的 32 位应用程序池上,我们有时会调整它以获得更多内存。

    <system.web> 
      <processModel memoryLimit="80" />
    </system.web> 
    
    • 2
  6. user1797
    2009-05-06T06:36:38+08:002009-05-06T06:36:38+08:00

    在 Windows 2003 上,您可以设置物理分配扩展(PAE) 以使用所有内存。IIS6 应用程序池的默认内存是5MB。

    • 1

相关问题

  • IIS 优化

  • 有什么理由使用 Windows Server 2003 而不是 Server 2008?

  • IIS 6.0 (Windows Server 2003) 备份的最佳实践?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve