2

我们有以下设置:

虚拟服务器,Intel Xeon X5650 @ 2.67Ghz(4 个处理器) 8GB RAM Windows server 2008 Standard 64bit Sql Server Express IIS 7.5

我们的数据库只有 200mb。我们正在运行一个 ASP.net 应用程序。我们最近遇到了一些性能问题,大约 200 个并发连接导致 100% 的 CPU 使用率(主要由 IIS 消耗)并使响应时间达到 20 秒左右!在对我们的代码进行一些调整后,我们能够在 1 分钟内从loader.io运行1500 个并发用户的负载测试,最后我们的响应时间约为 5 秒,CPU 约为 95%,再次主要由 IIS 消耗,我们的内存使用量约为 4GB。然而,我们预计峰值将超过 1500 个,在短时间内达到约 4000 个用户。

我的问题如下:1)这是我们当前设置的正常性能吗?我们的网站在数据库上非常密集,我们正在使用实体框架。2) 升级到 Sql Web 版是否有任何好处,因为我们的数据库看起来如此之小?3) 你认为这种类型的设置可以处理 4000 个用户吗?4)关于我们可以做些什么来处理这个负载有什么建议吗?

我知道这有点主观,但非常感谢任何答案。

4

4 回答 4

1

这是我们当前设置的正常性能吗?

取决于你的代码。您是否对代码进行了概要分析以确保其中没有任何愚蠢的东西?

我们的网站在数据库上非常密集,我们正在使用实体框架。

再一次,你是否发现你在实体框架上花了很多时间?它很慢,但问题是“密集”是什么意思。这就是分析器的用途。

升级到 Sql Web 版本是否有任何好处,因为我们的数据库看起来如此之小?

救命,我的披萨来得太晚了。升级到更大的汽车会有帮助吗?你自己说你把时间花在 IIS 上,而不是 sql server 上。

你认为这种类型的设置可以处理 4000 个用户吗?

你觉得我的车够大吗?注意我没有告诉你我需要它做什么。不查看使用模式和您的代码 - 不知道。那说:与您今天购买的相比,服务器可悲。因此,这是一个无关紧要的问题 - 如果需要,只需升级即可。

关于我们可以做些什么来处理这个负载有什么建议吗?

负载测试+分析器,优化代码。获得更大的服务器。意识到我们没有水晶球来弄清楚你的代码有多好/坏/多愚蠢。

于 2012-12-06T05:52:29.390 回答
0

对于您当前的机器,我怀疑问题出在 IIS 本身,而是与您的应用程序设计和/或使用框架的方式有关。我个人最近才了解到,包括多次往返数据库的 IIS 请求可以在数百微秒内测量,而不是数百毫秒......单个锁定错误或不平衡队列可能会限制您的应用程序可扩展性,无论您的硬件如何规格 [ https://twitter.com/michaelzino/status/454512110165184512]。Entity Framework 以在第一次初始调用时根据数据库模式验证您的模型而闻名。我建议分析您的应用程序层,从数据访问层或内部数据库调用开始,然后向上。

于 2014-04-17T06:18:28.283 回答
0

我的经验是并发请求最关键的方面是服务器内存的数量以及您的代码对该内存的消耗。

随着物理内存的消耗,服务器开始从物理内存交换到虚拟内存,这会显着减慢处理速度并导致您描述的症状。

我会先将另外 8gb 的内存放入服务器。同时尝试优化您的代码,以便在请求期间处理更少的数据或使用更少的内存。此外,将 sql server 移动到单独的机器上,这样 iis 和 sql server 之间就不会在内存可用性方面存在竞争。

于 2013-05-26T17:58:02.397 回答
0

这里出现的第一个问题是:您是否部署了项目的 RELEASE 或 DEBUG 编译的二进制文件?

升级到 WebEdition 在这里不会解决任何问题,因为版本的差异非常简单:WebEdition 只是在内部调度程序/等中受到限制。- 所以你会很好地使用标准版。

于 2013-05-26T16:56:57.727 回答