gpt4 book ai didi

c# - 在 Web 应用程序中支持大约 400 多个并发用户的设计考虑

转载 作者:太空狗 更新时间:2023-10-29 21:35:55 25 4
gpt4 key购买 nike

我正处于一个中型 asp.net c# 项目的开始,应用程序性能要求能够支持大约 400 多个并发用户。

在构建满足此类性能和可用性标准的应用程序时,我需要牢记哪些事项?该页面需要在 5 秒内送达。我计划将应用程序和数据库放在不同的物理机器上。从编码和应用程​​序分层的角度来看:-

  • 如果我让数据库层通过一个WCF 服务,它会影响性能吗?我应该直接使用改为 tcp 连接?
  • 如果我使用 Entity 框架或其他 ORM 或企业图书馆数据 block ,这有关系吗?
  • 我应该将异常记录到数据库还是文本文件?
  • 我如何在开发过程中检查正在构建的代码最终是否会满足这些性能标准?或者这是我在开发阶段需要担心的一点吗?
  • 我是否需要将我的数据库连接代码和其他保存在应用程序生命周期内很少更改的查找数据的类放在静态类中,以便它们在应用程序生命周期内可用?
  • 我应该应用哪种缓存策略?
  • 我可以使用哪些免费工具来衡量和测试性能?我知道 red-gate 性能测量工具,但它的许可成本很高,所以我更喜欢免费工具。

如果这个问题过于开放,我深表歉意。关于我应该如何进行的任何提示或想法?

感谢您的宝贵时间。

最佳答案

设计可伸缩应用程序时的一个重要考虑因素是使其无状态。没有 session 。另一个重要的考虑是尽可能缓存所有内容以减少数据库查询。并且这个缓存应该分发给专门设计用来存储它的其他机器。然后,当应用程序由于用户负载增加而开始缓慢运行时,您所要做的就是抛出一个额外的服务器。

至于你关于WCF的问题,你可以使用WCF,它不会成为你应用程序的瓶颈。它肯定会添加一个额外的层,这会稍微减慢速度,但如果您想公开一个可以在其自己的 WCF 上独立扩展的可重用层,那就太好了。

ORM 确实可能会降低您的应用程序的性能。这更多是因为您对生成的 SQL 查询的控制较少,因此更难以调整它们。这并不意味着您不应该使用 ORM。只是要注意它吐出的 SQL 并与您的数据库管理员一起调整它。还有轻量级的 ORM,例如 dapper , PetaPocoMassive您可能会考虑。

就静态类而言,与实例类相比,它们不会提高多少性能。 CLR 上的类实例化是一个相当快的操作 Ayende explains .静态类将在数据访问层和消费层之间引入紧密耦合。所以你暂时可以忘记静态类。

对于错误记录,我会推荐你​​ELMAH .

基准测试有很多工具,Apanche Bench是一种易于使用的方法。

关于c# - 在 Web 应用程序中支持大约 400 多个并发用户的设计考虑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com