我正在对我制作的应用程序进行基准测试,该应用程序使用repcached(memcached with replication)来存储对象并减轻数据库的负担。
在对我运行的索引页面进行基准测试时
ab -c 400 -n 5000 http://mysite
当我只使用一个带有
的memcache服务器时list($server, $port) = explode(':', $settings->memcached_servers[0]);
$this->link = new Memcache();
$this->link->connect($server, (int) $port);
我得到1000 reqs / sec
当我使用
将多个服务器输出到池中时$this->link = new Memcache();
foreach($settings->memcached_servers as $server){
list($server, $port) = explode(':', $server);
$this->link->addServer($server, (int) $port, 0, 10);
}
我只获得300 reqs / sec
差异巨大
知道为什么吗?
我真的需要2台服务器用于冗余,但性能也很重要
拥有如此巨大的差异是正常的吗?
基本上,索引页面只对数据库进行2次调用,只获得一行,因此在运行测试时会缓存行。
但我很惊讶地发现memcached在测试中落后了很多。
答案 0 :(得分:0)
好像罪魁祸首是addServer的重量参数
第一台服务器将其更改为1,第二台服务器更改为2,并且性能现在相同