.NET Web服务的可伸缩性

时间:2010-03-14 10:59:56

标签: c# web-services scalability

任何人都可以帮我解决有关网络服务和可扩展性的问题吗?我已经将web服务作为外观写入我们的文档管理系统,需要考虑可伸缩性问题。我应该考虑哪些方面来确保性能和可用性?

提前致谢

5 个答案:

答案 0 :(得分:3)

性能与可伸缩性分开。可伸缩性意味着您可以添加更多服务器以线性增加系统吞吐量(即更多客户端连接)。最好的方法是使用无状态Web服务。这样任何客户端都可以在n台不同的机器上调用任何n个webservice。如果最后有一个共享数据库用于持久性最终将成为你的瓶颈。有一些方法可以通过数据分区和分片来减少这种情况,但只有在达到这一点时才会这样做。

答案 1 :(得分:1)

首先,确定您的Web服务可接受的行为。应该怎样才能应对 - 每秒1000个连接?每个连接的响应时间是多少?

然后,您需要自动使用Web服务,以便对系统进行压力测试。

每秒有100个请求会发生什么? 1000? 10000?

然后,您可以决定性能是否正常,可接受的行为是否过于严格,或者您是否需要根据实际的性能分析数据进行大量的性能调整。

答案 2 :(得分:0)

您应该在IIS中托管您的WCF服务。 IIS内置了很多性能,可伸缩性,安全性等机制,是保存您重新发明轮子的最佳起点。

答案 3 :(得分:0)

某些性能肯定是由于您自己的代码,但我们假设它已经过优化。此时,额外的性能扩展问题涉及服务主机(例如IIS)托管它的机器以及它们的网络(内部/内部网)连接速度。你需要做一些速度测试来确定事情。

答案 4 :(得分:0)

这真的取决于你在网络服务中做了什么,但你要找出的唯一方法就是模拟大量用户并进行测量。

看看我对这个问题的回答:Measuring performance

当我们在这个庄园中测试我们的代码时(Web服务托管在Windows服务中),我们发现瓶颈在于对外观服务中的每个用户进行身份验证。特别是windows组件LSASS正在使用大部分CPU。 幸运的是,我们能够创建新的机器,每个机器都有一个外观服务,然后调用我们的主要Web服务集。这使我们能够扩展到大量用户(通常使用我们软件的100,000名用户)。