vps( Intel(R) Xeon(R) CPU L5520 @ 2.27GHz) vs 专用 (Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz) 在几个 mysql 调用中胜出 40ms

vps( Intel(R) Xeon(R) CPU L5520 @ 2.27GHz) vs 专用 (Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz) 在几个 mysql 调用中胜出 40ms

正如标题所说,我在这里非常困惑,为什么第一个(Linode)服务器会在使用十几个mysql函数的php脚本中以40-50毫秒的速度击败相当知名的liquid-web专用服务器(平均10毫秒完成,而专用服务器为50-60毫秒)。

我做了一个循环测试来测量这一点。

Linode vps 拥有 512MB 内存,而专用内存只有 4GB,但我想这在这里应该无关紧要。

另外,我的 linode 上的 vps 在测试期间平均每秒加载 10-20 个请求。

所有这些都让我非常担心,甚至将我的网站转移到这里,因为这需要快速的 mysql 操作/任务。

有什么想法或建议吗?

编辑:又做了一次测试,一个简单的插入平均需要 30 毫秒!我完全糊涂了。

测试

<?php

$started_at = millitime();

$user = "x";
$password = "x";
$database = "x";
mysql_connect('localhost', $user, $password) or die("Unable to conn");
mysql_select_db($database) or die("Unable to select database");


$result = mysql_query("INSERT INTO x VALUES ('','1', '1', '1')"); 


$ended = millitime();
$waited = $ended - $started_at;
echo "\n\n - >>> SCRIPT ENDED IN > " . $waited . "\n";



function millitime()
{
    $microtime = microtime();
    $comps = explode(' ', $microtime);
    // Note: Using a string here to prevent loss of precision
    // in case of "overflow" (PHP converts it to a double)
    return sprintf('%d%03d', $comps[1], $comps[0] * 1000) . "\n";
}



?>

答案1

Linode vps 拥有 512MB 内存,而专用内存只有 4GB,但我想这在这里应该无关紧要。

数据库通常受 I 约束,记忆有帮助。

有什么想法或建议吗?

除非您受到 CPU 限制,否则不要担心 CPU。弄清楚缓存使用情况(内存)和 IOPS。大多数情况下,数据库的存亡取决于 IO 性能,CPU 很少受到关注。

答案2

又做了一次测试,一个简单的插入平均需要 30 毫秒!我完全困惑了。

这似乎是正确的。您需要至少旋转两次才能执行数据库更新。假设您的磁盘以 5400 RPM 的速度旋转。这样得出:(60*1000*2)/5400 = 最少 22ms。

当然,在插入过程中系统还可以做很多其他事情。你只需要等待 I/O 完成即可。

相关内容