gpt4 book ai didi

mysql - 我应该在我的网络服务上使用持久连接吗?

转载 作者:行者123 更新时间:2023-11-30 23:48:29 25 4
gpt4 key购买 nike

我有一个在云服务器中运行的 asp net mvc4 编码的 Web 服务。这个云服务器有一个 IIS 8 和一个 mysql 服务器。此服务器专用于此应用程序。

我对这个服务器的请求越来越多。每个请求都需要连接到数据库(70% 的查询是简单的“选择”,25% 是与 2 或 3 个表的连接,5% 是插入)。

服务器访问数据库并给出一个带有获取数据的简单 xml 作为答案(xml 大约为 0.2 kb 到 2kb)

网络服务始终在服务器中运行。

对于每个请求,我的网络服务器都会打开一个数据库连接(存储在同一台机器上),操作,关闭连接然后用 xml 响应。

现在它每分钟只发生几次。我的连接器类是单例。

在这种情况下,我应该使这个连接持久化吗?这是否有助于提高我的应用程序的可扩展性?关于我应该怎么做才能使其更具可扩展性的任何建议?

最佳答案

几点:

  • 记住 Premature Optimization is the Root of All Evil .如果目前这不是性能瓶颈,我不会在这上面花太多时间。

  • 单例在多线程应用程序中非常非常糟糕。它们代表了可扩展性的对立面。在高流量应用程序中,您会看到竞争条件等问题。访问静态对象或方法可能涉及上下文切换/修改,这会严重降低性能。我已经看到应用程序通过摆脱单例和其他静态对象并将它们替换为非单例(“多例?”:/)而获得 10 倍的加速

  • ADO.NET, the underlying database provider behind entity framework and most other db libraries on Windows, already performs connection pooling ,这大大减少了连接到数据库的开销。在您的应用程序中重新实现该功能(这实际上是您通过尝试在应用程序层而不是数据层保持连接打开而正在做的事情)不太可能提高应用程序的性能。

  • WCF本质上支持持久连接,因此如果您确实需要此功能,您可能需要考虑在 WCF 中实现 Web 服务而不是 RESTful 或 SOAP (asmx) 服务。但是,我觉得 WCF 是一种相当繁重的 Web 服务实现方法,并且(在我看来)会导致不必要的复杂性。

关于mysql - 我应该在我的网络服务上使用持久连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25269062/

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