【问题标题】:Improving scalability of .NET application提高 .NET 应用程序的可扩展性
【发布时间】:2014-12-28 14:54:16
【问题描述】:
我有一个 .net 应用程序,它使用了多种技术和组件,即 WCF、C#、Web API。应用程序可以很好地扩展到一定水平,但之后它开始快速而严重地崩溃。
快速示例:在 250 个用户连接到系统后,它崩溃并且无法处理任何进一步的连接/用户。
有人可以就我在上述技术或 IIS 中需要遵循的一般术语提出改进可扩展性的建议。
非常感谢您在这方面的任何帮助。
【问题讨论】:
标签:
c#
.net
wcf
asp.net-web-api
scalability
【解决方案1】:
您可以开始分析您的系统,取消 PerfMon 或 XPerf 并检查导致崩溃的原因。可能是 RAM 使用情况。拥有多个活动会话可能会导致内存不足。
也可能 CPU 无法处理如此大量的同时请求,或者您只是没有网络带宽。
一旦找到崩溃原因,您就可以开始优化代码(例如减少内存占用、优化长时间函数等)
【解决方案2】:
这里有两种方法,您可能需要同时查看这两种方法。
首先是在 WebAPI 和 WCF 上处理请求所花费的时间。使用 RedGate Performance Profiler 等工具或其他类似工具来确定每个请求花费最多的时间。
然后看看
接下来是查看您的硬件。如果以 Azure 为例,选择更大的实例和更多实例,Azure 将在其中提供负载平衡。如果您不使用 Azure,设置负载平衡可能会有点困难,但这是唯一的其他扩展方式。
首先使用性能工具检查您的代码,然后查看硬件是否无法更快。但是 250 个用户应该不是什么大问题,因此我认为您的代码可以提高性能。