我和memcached有个问题。不确定是memcached、php还是tcp套接字,但每次我使用memcached尝试具有50或更多并发性的基准测试时,其中一些请求使用apache ab失败。我得到(99)无法分配请求的地址错误。
当我对一个常规的phpinfo()页面执行5000的并发性测试时。百事大吉。没有失败的请求。
似乎memcached不能支持高并发性,或者我缺少了什么?我使用-c 5000标志运行memcached。
服务器:(2)四核Xeon 2.5Ghz,64 10内存,4TB Raid 10,64位11.1 OpenSUSE
发布于 2009-08-14 23:21:32
好吧,我想通了。也许这会帮助那些有同样问题的人。
似乎这个问题可以是多种因素的结合。
确保强制使用: /sbin/sysctl -p重新加载
在我做了这些更改之后,我的服务器现在正在运行30,000个并发连接和1,000,000个同时请求,没有任何问题,没有失败的请求,也没有使用apache编写错误。
用于基准测试的命令: ab -n 1000000 -c 30000 http://localhost/test.php
我的Apache甚至无法接近这个基准。现在让我嘲笑阿帕奇。Apache在大约200次并发时爬行。
发布于 2009-08-14 20:01:00
我只使用了一个4字节的整数,将它用作测试目的的页面计数器。即使在5000个并发连接和10万个请求下,其他php页面也能正常工作。这个服务器有很大的马力和内存,所以我知道这不是问题。
似乎死掉的页面只有5行代码,可以使用memcached测试页面计数器。建立连接会导致以下错误:(99)无法分配请求的地址。
这个问题从50个并发connections.
)。
这就是我现在所拥有的一切,我会在发现更多信息的时候发布更多的信息。似乎有很多人有这个问题。
发布于 2009-08-14 21:07:36
我刚用一个文件测试了一些类似的东西;
$mc = memcache_connect('localhost', 11211);
$visitors = memcache_get($mc, 'visitors') + 1;
memcache_set($mc, 'visitors', $visitors, 0, 30);
echo $visitors;运行在一个带有nginx、php- memcached和memcached的小型虚拟机上。
我在同一个网络中从笔记本上运行ab -c 250 -t 60 http://testserver/memcache.php,没有看到任何错误。
你在哪里看到错误的?在您的php错误日志中?
https://stackoverflow.com/questions/1278167
复制相似问题