gpt4 book ai didi

php - 最小化连接数的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 21:44:57 24 4
gpt4 key购买 nike

我的主人有一个真正的,真的数据库用户的最大连接数较低。这是我的用户收到的错误:

User 'username_here' has exceeded the 'max_user_connections' resource (current value: 15).


我不认为我有能力提高这个值(value),除非我升级到更昂贵的计划,所以我正在寻找一种有效使用这 15 个连接的方法。
我处理连接的方式如下:我在每个页面加载开始时加载的脚本中连接到数据库,然后将该连接传递给运行查询的函数。我想我可以通过在查询函数中打开连接并在 return 语句之后立即关闭它来最小化连接打开的时间,这样可以吗,还是我无缘无故地让事情变得更复杂?
作为最后的手段,我正在考虑将连接放入 try/catch 并尝试每隔几秒钟重新连接几次。这样做是明智的,还是更糟?

最佳答案

以下是优化连接数的方法:

  • 确保您是 不是 在任何地方使用持久连接。这是忘记打开连接的最简单方法,也是可用连接用完的最常见原因。在 mysqli 中,通过添加 p: 来打开持久连接。连接时到主机名。
  • 确保您只对每个 HTTP 请求打开一个连接。不要打开和关闭它们,因为这会很快失控,并且会对您的应用程序产生不良的性能影响。有一个全局连接,您可以将其传递给需要它的函数。
  • 优化您的查询,以便更快地处理它们并更快地释放连接。这也适用于优化索引和摆脱 N+1 问题。 (根据经验,我可以说 PDO 在重构代码以避免设计不佳的查询方面有很大帮助。)
  • 如果您需要在同一进程中执行其他一些耗时的任务,请先执行所有 SQL 操作,然后关闭连接。这同样适用于打开连接。仅在您知道需要它时才打开它。

  • 如果您发现自己遇到超出“max_user_connections”限制的问题,那么这意味着您的 Web 服务器配置不正确。在理想情况下,MySQL 连接将是无限的,但在共享主机上,必须设置此限制以防止资源滥用(意外或故意)。但是,可用的 MySQL 连接数应与可用的服务器线程数相匹配。这可能是一个非常固执的话题,但我想说的是,如果您的应用程序需要对每个请求执行一些 SQL 操作,那么可用服务器连接数不应超过可用 MySQL 连接数。在 apache 上,您可以计算可能的连接数 as shown in this link.
    在设计合理的应用程序上,即使有 15 个并发 MySQL 连接,您仍然应该能够处理令人满意的每秒请求量。例如,如果每个请求需要 100 毫秒才能完成,那么您每秒可以处理 150 个请求。

    关于php - 最小化连接数的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65143044/

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