我总是设置机器来安装一个典型的LAMP,最近我还测试了一个用建立的外部数据库。不过,我从中得到的表演似乎有点不合情理。
我的网站与本地数据库的平均加载速度是0.04s。通过SSL连接到Cloud,加载速度为0.4s。~10倍慢,所以我研究了这一点,并学习了关于连接池和PHP如何不支持它,但ODBC是这样做的,这是我的服务器似乎正在使用的,所以这是好的,但~10倍慢仍然是不好的。
我尝试过建立一个Cloud代理,希望这是一个解决方案,但是在今天早些时候设置它之后,它给了我5s的加载速度。~100倍的速度,所以绝对不是一个解决方案。
我是否可以使用Google平台获得接近本地数据库的速度?我应该使用其他服务来获得更好的性能吗?还是我只需要承受这种性能的冲击并接受它呢?
编辑:
有关系统的更多信息。web服务器是上的一个计算实例。计算实例和SQL实例都在同一个区域中,使用g1-small (1 vCPU,1.7GB内存)。
似乎延迟大约是1毫秒。
现在,每个查询都是通过网络单独发送的,所以使用多个查询可以节省大量时间,假设PHP实际上在一个网络请求中发送所有查询。
发布于 2018-08-21 18:38:38
假设您的堆栈的Linux/Apache/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平台,在那里它将接近数据库。
https://serverfault.com/questions/927373
复制相似问题