首页
学习
活动
专区
圈层
工具
发布

快速
EN

Server Fault用户
提问于 2018-08-21 16:11:12
回答 1查看 2K关注 0票数 0

我总是设置机器来安装一个典型的LAMP,最近我还测试了一个用建立的外部数据库。不过,我从中得到的表演似乎有点不合情理。

我的网站与本地数据库的平均加载速度是0.04s。通过SSL连接到Cloud,加载速度为0.4s。~10倍慢,所以我研究了这一点,并学习了关于连接池和PHP如何不支持它,但ODBC是这样做的,这是我的服务器似乎正在使用的,所以这是好的,但~10倍慢仍然是不好的。

我尝试过建立一个Cloud代理,希望这是一个解决方案,但是在今天早些时候设置它之后,它给了我5s的加载速度。~100倍的速度,所以绝对不是一个解决方案。

我是否可以使用Google平台获得接近本地数据库的速度?我应该使用其他服务来获得更好的性能吗?还是我只需要承受这种性能的冲击并接受它呢?

编辑:

有关系统的更多信息。web服务器是上的一个计算实例。计算实例和SQL实例都在同一个区域中,使用g1-small (1 vCPU,1.7GB内存)。

似乎延迟大约是1毫秒。

查询运行时的比较:左侧为本地db,右侧为远程db

现在,每个查询都是通过网络单独发送的,所以使用多个查询可以节省大量时间,假设PHP实际上在一个网络请求中发送所有查询。

EN

回答 1

Server Fault用户

发布于 2018-08-21 18:38:38

假设您的堆栈的Linux/Apache/PHP部分运行在本地服务器上,并且您与云数据库服务器位于同一个半球.

但首先,让我们回顾一下目前的情况:

  1. PHP程序将查询发送到数据库以供执行。
  2. 数据库解析查询。
  3. 数据库执行查询并定位要返回的行。
  4. 数据库从存储(磁盘)中读取行并返回它们。
  5. 行被传输到PHP程序。
  6. PHP程序处理行。

让我们假设Google在执行2、3和4方面的效率与在硬件上运行MySQL一样有效。如果为缓慢存储提供Cloud服务器,则可能会有不同之处,特别是在步骤4中,但是我不知道,所以现在我们将忽略这个因素。

因此,要分析的因素是1(将查询发送到数据库)和5(将行从数据库发送到PHP服务器)。

当您在与Apache/PHP服务器相同的框上运行数据库时,发送查询几乎没有延迟。从数据库传输到PHP程序的行发生在同一主机上的Linux套接字上,因此速度几乎是瞬时的。

当您将数据库移动到与Apache/PHP服务器不同的服务器上时,但是在同一个数据中心中,查询要到达数据库有一些网络延迟(由于大小非常小),以及将结果传输回PHP所需的时间。根据返回的行数,步骤5可能比数据库位于同一主机上花费的时间长得多。然而,这种“更长的时间”是相对的-它在一个正常的数据中心与Gbps网络或服务器之间更好的情况下是可以忽略不计的。

现在,让我们将数据库服务器移到Google。你和互联网的连接是什么?让我们假设一个高质量、低延迟的100 high光纤连接到ISP。

PHP服务器和数据库之间的网络延迟从<1ms增加到>30 1ms-即延迟增加了30倍。在实践中,您将看到超过30倍的增长,因为您正在传输更多的信息-特别是在将数据从数据库返回到服务器的第5步。

每个程序员都应该知道的图表延迟数,在许多站点、文章和书籍中都可以看到,这给了您很好的稳定的思考点。有些地方你可以找到它,以各种形式。

有解决办法吗?在不知道您想做什么、解决问题和生成什么的情况下,我想说的是,解决方案只是将计算(PHP)移动到Google平台,在那里它将接近数据库。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/927373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档