我们正在努力优化我们的drupal站点。我们正在使用围攻来衡量性能(作为drupal访问者)。
环境: Nginx + FastCGI+ Memcache
围攻运行了几秒钟,然后我们遇到了连接错误:示例:
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使用相同的围城测试配置,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分配2 2GB内存。
发布于 2009-05-18 22:43:14
I你的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个线程提供服务,这在筛选时可能还不够。
您还可以尝试使用与-c开关非常接近的apache基准测试工具。尝试一下,看看结果在不同的值上是如何变化的。
最后,您应该在php机器上的memcached端口(通常是11211)上运行tcpdump,以找出连接发生了什么情况。drupal会启动它们吗?另一台主机是使用RST响应还是超时?
memcached php文档api中有一个bug,指出默认情况下连接是非持久的。默认情况下,它们的是持久化的(好吧,在我遇到问题的时候,它们就是持久性的)。
请随时对此答案发表评论,我将阅读评论并在必要时提供进一步的帮助。
https://stackoverflow.com/questions/879417
复制相似问题