【问题标题】:Retrieve how long it takes to establish a connection with PHP mysqli_real_connect()检索与 PHP mysqli_real_connect() 建立连接所需的时间
【发布时间】:2013-09-27 02:32:47
【问题描述】:

我正在尝试查找内部 PHP 应用程序的瓶颈。在请求开始需要 5 秒或更长时间才能完成之前,我只能获得大约 10 个请求/秒。服务器上的 CPU 负载没什么,vmstat 没有显示任何 I/O 等待或交换。我强烈怀疑是与外部 MySQL 服务器的连接导致速度变慢。我正在使用:

mysqli_real_connect(...)

有没有办法计算连接需要多长时间,并将其记录在某个地方,这样我就可以查看实际握手和连接到 MySQL 服务器所用的时间。

【问题讨论】:

  • 使用 microtime() 知道建立连接需要多长时间。php.net/manual/fr/function.microtime.php
  • 你连接到 url/server localhost 了吗?如果是这样,请将其更改为127.0.0.1
  • 通过专用网络连接到外部服务器。

标签: php mysql performance mysqli


【解决方案1】:
$start_time = microtime(TRUE);

// do anything ... mysqli

$stop_time = microtime(TRUE);

$duration = $stop_time - $start_time;

var_dump($duration);

【讨论】:

  • mysqli_real_connect() 周围放置计时器代码是否真正告诉我 PHP 何时建立 MySQL 连接,或者在我调用 mysqli_query() 之前不会发生实际连接。
  • 为什么要连接到数据库服务器,甚至在您计划使用它之前? ...所以是的,(恕我直言,即使我是“the master imself”),mysql(i)/PDO 在调用时会被执行 - 所以,在令人难以置信的建议开始和停止序列之间。
  • 所以我看到130.1ms 的时间只是在空闲时的mysqli_real_connect() 呼叫周围。这似乎非常高。 MySQL 服务器没有负载,似乎是顶级的。当我一遍又一遍地刷新时,通话时间会持续下降到 20-30ms 左右。
  • 请不要问我。我会说0.13秒太多了,但我不知道你的配置。我(不知道为什么,目前只是“升级”到 PDO)不能使用持久连接(我更喜欢),连接时间在 0.00xSeconds [至少在服务器启动后重新连接]。
  • 我将MySQL服务器地址放入/etc/hosts,连接时间下降到1ms。哇,DNS 中有很多延迟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 2020-05-21
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多