Memcached 正在减慢 VirtualBox 中的网站速度

Memcached 正在减慢 VirtualBox 中的网站速度

我注意到我们的 Web 项目 (Drupal) 在虚拟机中使用 memcached 时运行速度较慢。不使用 memcached 时,页面加载时间快两倍以上。我没有注意到任何不自然的 memcached 行为。

虚拟框是(使用 vagrant):

  • Debian Squeeze 607
  • 1 个 CPU 核心(ICH 主板驱动程序)
  • 4G内存
  • SSD 驱动器(ICH 驱动程序)

Drupal 的具体设置是:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
$conf['cache_default_class'] = 'MemCacheDrupal';
$conf['memcache_key_prefix'] = 'oursite_';

仅将其与本机(非虚拟化)环境进行比较 - 在​​同一个项目中,memcached 的性能提高了 10-20%。

有什么想法吗?有什么我可以继续调查的地方吗?

答案1

您所看到的情况与我的预期基本一致。那些告诉您 VirtualBox“提供与真实硬件相同的性能”的人要么在撒谎,要么他们从未在 VirtualBox 和底层操作系统上运行过任何真实的、压力很大的工作负载。
当然,在某些情况下,VirtualBox 的性能会与物理硬件一样好(甚至可能略好),但这不是其中之一。

VirtualBox 是一个类型 2 虚拟机管理程序
您在 VirtualBox 中执行的每个操作都必须影响模拟硬件,并传递到系统底层的真实操作系统以实际处理请求。
考虑到所有这些额外开销,我预计内存密集型程序(如 memcache)会在模拟中缓慢运行。


我真的没有任何建议来改善这些条件下的 VirtualBox 性能。
您可以调整设置,为您的 VirtualBox 实例分配大量 RAM,并告诉您的主机操作系统优先考虑 VirtualBox 进程并且永远不要将其换出,但这些都不是最佳选择。

我的建议是,除非您专门测试与 memcache 相关的功能,否则请关闭 VirtualBox 实例上的 memcache。
或者,切换到类型 1 虚拟机管理程序 (VMWare、Hyper-V) 或生产质量类型 2 虚拟机管理程序 (KVM)。您可能会看到性能更接近您在物理硬件上看到的性能。

相关内容