我们正在努力调整我们的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内存。
答案 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中有一个错误,表示默认情况下连接是非持久性的。默认情况下, 持续存在(好吧,当时我遇到了问题)。
请随意评论此答案,我会阅读评论并在必要时进一步提供帮助。