Drupal站点 - Memcache连接错误

时间:2009-05-18 19:41:25

标签: drupal timeout memcached

我们正在努力调整我们的drupal网站。 我们使用Siege来衡量绩效(作为drupal访客)。

ENV: Nginx + FastCGI + Memcache

Siege运行正常几秒钟,然后我们遇到连接错误: 例如:

HTTP/1.1 200  29.18 secs:    5877 bytes ==> /
HTTP/1.1 200  29.39 secs:    5877 bytes ==> /
warning: socket: -1656235120 select timed out: Connection timed out
warning: socket: -1673020528 select timed out: Connection timed out

使用相同的Siege测试配置,Nginx + FastCGI + Drupal Cache似乎工作正常。 例如:

HTTP/1.1 200   1.41 secs:    5868 bytes ==> /
HTTP/1.1 200   1.40 secs:    5868 bytes ==> /

正如您所看到的,除了连接错误之外,MemCache的响应时间要高得多。

知道这里可能出现什么问题......以及为什么Drupal会在加载时抛出memcache错误?

Memcache在单独的实例上运行。为MemCache分配了2GB内存。

1 个答案:

答案 0 :(得分:3)

猜测你用完了memcached连接。请每秒使用一个简单的脚本检查您的memcached安装。然后开始围攻。我猜你的memcached会在一段时间后停止响应。

测试memcache php脚本:

<?php
 $memcache = new Memcache;
 $memcache->connect('localhost', 11211) or die ('Unable to connect');
 $version = $memcache->getVersion();
 echo 'Server version: '.$version;
?>

猜测正在发生的事情是你没有在memcache中禁用持久连接,它们在php线程中徘徊。 Memcached可以同时为其中的1023个服务,而在Sieging时可能还不够。

您也可以尝试 ab ,apache基准测试工具,仔细查看-c开关。玩弄它,看看结果如何根据不同的值变化。

最后,您应该在php机器上的memcached端口(通常是11211)上运行tcpdump,以了解连接发生了什么。 drupal会启动吗?其他主机是使用RST响应还是超时?

memcached php文档api中有一个错误,表示默认情况下连接是非持久性的。默认情况下, 持续存在(好吧,当时我遇到了问题)。

请随意评论此答案,我会阅读评论并在必要时进一步提供帮助。