我们的主要网站远程访问我们在其他域名托管的其他网站的数据库。我的问题是我们的主网站加载页面非常慢,而第二个网站没有遇到我们主网站的问题(数据库托管在我们的第二个网站上)。
为什么我们在主网站上遇到此问题? 可能的原因是什么? 对此可能的解决方案是什么?
编辑: 我们只是将其他域名转移到我们主网站的同一主机上。 也许问题是两个托管之间的数据库身份验证过程。
答案 0 :(得分:0)
这是一个非常非常广泛的问题 - 我只能提供一般性建议。
我首先要确保慢速网站写得正确。在受控开发环境中运行网站,并使用生产数据库的副本,并使用Apache JMeter等工具对其进行加载;确保它快速"快速"在那种环境中。 "快速"是一个可移动的概念,但我希望看到亚秒响应时间高达数百个并发用户。 如果网站在这种情况下运行缓慢,那么生产将会很慢;找出瓶颈所在,调整,优化等。
如果问题不是这样,我会在连接到同一数据库的其他网站上复制该设置,并同时在两个站点上加载。您可能刚刚达到系统的可扩展性限制,并且您可能会看到与此相关的性能问题 - 如果第一个网站快速响应而第二个网站没有响应,则可能性不大,但您可能会这样做。重新看到死锁或其他并发问题。
如果网站在"完美"基础设施,但不是生产,你需要解决生产中的问题。最好的方法是在生产环境中使用分析器;这可能意味着创建一个不可公开访问的网站副本,并在那里安装分析器。 XDebug非常适合PHP。 分析器将显示应用程序减速的位置;它可以在PHP代码中,它可以在身份验证部分,它可以执行SQL查询。
一旦探查器告诉您问题所在,您可以找出解决方法。
但是,根据经验,在单个网络笼外运行数据库查询是一个糟糕的想法;它不安全,它会将您的数据库查询暴露给任意的互联网性能问题,并且会影响您的带宽分配。它与" www.company.com"意义上的域名没有关系。 - 一个托管环境可以运行多个域 - 但如果您通过公共互联网路由数据库流量,则放弃对性能的任何控制。