【问题标题】:Increase RAM usage for IIS server增加 IIS 服务器的 RAM 使用率
【发布时间】:2016-04-13 05:32:15
【问题描述】:

我在以下服务器配置上运行大型 ERP 系统。该应用程序是使用 AngularJS 和 ASP.NET 4.5 开发的

Dell PowerEdge R730(四核 2.7 Ghz,32 GB RAM,5 x 500 GB 硬盘,已配置 RAID5) 软件:主机操作系统是 VMWare ESXi 6.0 两个 VM 在 VMWare ESXi 上运行 .. 一个是 Windows Server 2012 R2,有 16 个已分配 GB 内存...这包含带有我的应用程序代码的 IIS 8 服务器另一个 VM 也是带有 SQL Server 2012 和 16 GB 内存的 Windows Server 2012 R2...。这仅包含我的应用程序数据库。

你看,我把应用服务器和数据库服务器分开是为了负载平衡。

我的应用程序包含一个注册模块,其中的负载预计会非常高(10 分钟内大约有 10,000 名访问者)

为了支持这么多的请求,我在我的 IIS 服务器中执行了以下操作 -> 将应用程序池中的请求队列长度增加到 5000 -> 启用 aspx 文件的输出缓存 -> 在 IIS 服务器中启用静态和动态压缩 ->将每个应用程序池的虚拟内存限制和私有内存限制设置为 0 -> 将每个应用程序池的最大工作进程增加到 6

然后我使用 gatling 对我的应用程序运行负载测试。我一次将 500 个用户注入到我的注册模块中。

但是,我发现只有 40% / 45% 的 RAM 被使用。每个工作进程最多只使用 130 MB 左右。

gatling 报告说,我大约 20% 的请求出现 403 错误,超过 60% 的 HTTP 请求的响应时间超过 20 秒。

单个用户在大约 3 分钟内发出 380 个 HTTP 请求。单个用户的总数据传输量为 1.5 MB。我已经模拟了500个这样的用户。

我的服务器调优有什么遗漏吗?我已经调整了我的应用程序代码,以尽量减少内存泄漏、增加超时等等。

【问题讨论】:

  • 根据此页面,确切的 403 错误是什么:en.wikipedia.org/wiki/HTTP_403。 403.502 的解决方案与 403.18 完全不同。很可能缺少 RAM 不是问题。您可能需要 CPU 来处理所有这些并行请求
  • 如果请求需要时间并且不是异步编写的,那么您可能需要更多的工作人员。如果你对 20 个工人做同样的事情会发生什么? 100?
  • 20 / 30 名工人的结果是一样的......如果有 50 名工人,应用程序的速度会更慢

标签: asp.net angularjs iis load-testing esxi


【解决方案1】:

使用 Broadcom 网络芯片组的最新一代 PowerEdge 服务器存在一个已知问题。显然,网络的“VM”功能被破坏了,这导致了虚拟机上可怕的网络延迟。

  1. 前往戴尔,获取适用于 Broadcom 的最新固件和 Windows 驱动程序。

  2. 前往 VMWare 下载并获取最新的 Broadcom 驱动程序

关于工作进程设置,为了获得最佳性能,您应该考虑运行与有 NUMA 节点相同数量的工作进程,以便工作进程和 NUMA 节点之间具有 1:1 的亲和性。这可以通过将“Maximum Worker Processes”AppPool 设置为 0 来完成。在此设置中,IIS 确定硬件上有多少 NUMA 节点可用并启动相同数量的工作进程。

【讨论】:

    【解决方案2】:

    我想您收到的答案的 1 个警告是,如果您的服务器不支持 NUMA/使用对称处理,您将不会在 CPU 下看到那些 IIS 选项,但上面的海报似乎知道更多比我做的机器。抱歉,我没有足够的街头信誉将其添加为评论。至于 IIS,您可能还想确保您的应用程序池不使用默认的回收条件,并选择像午夜这样的时间进行回收。如果您应用了根级别设置,则 29 小时的默认应用程序池回收也可能会触发针对您的子池的垃圾收集/即使在并发 gc 中也会导致延迟,听起来您可能会从 Gcserver=true 中受益一些。不过,这很难评估。

    您的 sql 服务器是否针对该类型的工作负载进行了优化?如果您的数据不是最重要的,您可以通过延迟的持久性来缩短执行时间,然后评估为异步 io 等待类型返回过多信息的查询。一般来说,这里不足以真正评估 sql 优化,但如果配置不正确(大小/增长选项),由于增长、vlf 碎片等,您可能会遇到很多超时。

    【讨论】:

      猜你喜欢
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多