我们切换到新的开发服务器并体验到我们的测试套件需要两倍的时间。我们测试了数据库、文件系统等,但这些东西非常快,甚至比以前更快。
因此,我们编写了一个小型 ruby 基准测试(斐波那契)并执行了几次(平均值如下):
time_start = Time.now
f = lambda { |x| x < 2 ? x : f.call(x-1) + f.call(x-2) }
f.call(35)
time = Time.now - time_start
puts "#{time.round(4)}s needed"
使用 XEN 之前的机器:6s
使用 OpenVZ 后的机器:11,5
在两台机器上都安装了 rvm的Debian Squeeze (-> 编译) ruby-1.9.3-p194。这些机器上没有高负载,内存也可以。
或多或少唯一的区别是虚拟化引擎。在生产中,我们使用 VMware ESXi。基准测试需要大约11 秒。我们用 KVM 测试了另一台服务器,基准测试需要2,5s。
- 带 XEN 的机器:6s
- 带 OpenVZ 的机器:11.5 秒
- 使用 VMware ESXi 的机器:11 秒
- KVM机器:2.5s
那么我们可以在虚拟化中进行哪些更改以使我们的 ruby 更快呢?或者您有其他想法可能是什么问题?