【问题标题】:Increased loading time of two websites sharing one database增加共享一个数据库的两个网站的加载时间
【发布时间】:2023-04-05 00:19:01
【问题描述】:

我们的主网站远程访问了我们位于不同域托管的其他网站的数据库。我的问题是我们的主网站加载页面非常慢,而第二个网站没有遇到我们主网站的问题(数据库托管在我们的第二个网站上)。

为什么我们的主网站会遇到这个问题? 可能的原因是什么? 对此有什么可能的解决方案?

编辑: 我们只是将另一个域转移到我们主网站的同一主机上。 也许问题是两个主机之间的数据库身份验证过程。

【问题讨论】:

  • 所以网站 A 在环境 B 中从数据库加载数据时速度很慢,但网站 B(也是环境 B)没有同样的问题?是不是因为在不同的域中,数据库传输时间更长?

标签: mysql database remote-access


【解决方案1】:

这是一个非常非常广泛的问题 - 我只能提供一般性建议。

我首先要确保慢速网站的编写正确。在受控的开发环境中运行网站,使用生产数据库的副本,并使用 Apache JMeter 等工具对其进行加载;确保它在该环境中“快速”。 “快速”是一个可移动的概念,但我希望看到多达数百个并发用户的亚秒级响应时间。 如果网站在这种情况下速度很慢,那么生产速度就会很慢;找出瓶颈在哪里,调整,优化等。

如果这不是问题,我会复制该设置,让另一个网站连接到同一个数据库,并同时在两个网站上抛出负载。您可能刚刚达到系统的可扩展性限制,并且您可能会看到与此相关的性能问题 - 如果第一个网站快速响应而第二个网站没有响应,则不太可能,但您可能会看到死锁或其他并发问题。

如果网站在“完美”的基础架构上表现良好,但在生产环境中表现不佳,您需要找出生产环境中的问题。最好的方法是在生产环境中使用分析器;这可能意味着创建一个不可公开访问的网站副本,并在那里安装探查器。 XDebug 适用于 PHP。 分析器会告诉你你的应用程序在哪里变慢了;它可能在 PHP 代码中,可能在身份验证部分,可能正在执行 SQL 查询。

一旦分析器告诉您问题出在哪里,您就可以找出解决方法。

但是,根据经验,在单个网络笼外运行数据库查询是一个糟糕的主意。它不安全,它会将您的数据库查询暴露给任意 Internet 性能问题,并且会占用您的带宽分配。它与“www.company.com”意义上的域并没有真正的关系——一个托管环境可以运行多个域——但是如果你通过公共互联网路由你的数据库流量,你就放弃了对性能的任何控制。

【讨论】:

  • 感谢您的回答。我会尝试使用 xdebug.. tnx 来提供建议:)
猜你喜欢
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 2012-09-04
  • 2013-02-02
  • 1970-01-01
相关资源
最近更新 更多