我们有一个 RIA 应用程序,300 个客户端在 Intranet 环境中同时使用。他们一起对 IIS (asp.net) 进行每秒 30 次调用(实际上是 60 次,但调用在两个 IIS 服务器上进行负载平衡)。一半的调用正在获取资产(使用缓存配置文件,因此大部分时间缓存都被命中),另一半正在将数据保存到 sql server。
检索资产是使用 aspx 页面完成的。通过 WebORB、asp.net 和 Sql Server 保存数据。所以 WebORB 需要一些处理(amf 解码,GZIP,...)。我们也使用 Spring.NET,并且一些容器对象具有请求范围(不是很多)。
IIS 服务器 --> 虚拟机,4 个 CPU,2 GB RAM。它们基于 Windows 2008 x64 SP2 企业版。
使用 Sql Server 2008。
显然,两个 IIS 服务器的 CPU 始终在 60-70% 左右。
现在,我的问题是,60-70% 的负载是否可以接受,我们如何才能将其降低到更少的百分比(可能只使用一个 IIS 服务器)?+ 2 GB RAM 够用吗?
资产最大可达 20mb,但平均约为 30kb。(60-70% 的负载是通过 30kb 左右的资产实现的)。
使用 weborb 保存的数据非常小(2kb)并且只是一个对象。
很大程度上取决于 CPU。我的意思是物理的。需要注意的一件事是 - VM 内的 CPU 测量可能会关闭。在外面检查一下 - 服务器的负载情况。根据虚拟化 CPU 的不同,您可能真的没有很多负载......并看到 CPU 已满载。
永远不要忘记 GZIP 是占用大量 CPU 资源的。如果您在 Intranet 中,最好关闭压缩并使用快速网络(1gb - 无论如何应该是标准的)。
除此之外,我很抱歉,不能说更多。我会附加一个分析器并找出 CPU 负载用在哪里。也许(如果你幸运的话)你有一些非常糟糕的代码可以优化。
一个 IIS 每秒 30 次调用是否很多?见鬼,那不算什么。
我们的内容管理网站在峰值负载期间每秒有超过 300 次调用......这也不算什么。
但正如 TomTom 所提到的,有很多因素必须考虑在内。第一个是应用程序。