memcache服务器通过AB(Apache Benchmark)在重要请求中丢失连接

时间:2012-06-07 12:23:42

标签: caching memcached apachebench

我们在mysql服务器上遇到了一个非常大的问题,上周总共有400k行,大约220 MB,所以我们决定开始使用memcache。在更改整个脚本之前,已经准备好测试页面并使用apache基准测试(我不确定它是否是测试它的正确方法)

ab -n 50000 -c 150 http://192.168.1.5/test.php

当我使用上面的命令测试更多请求时,memcache在25000请求后开始断开连接。

以下是test.php的示例代码

<?php
global $memcache;
$memcache = new Memcache();

//$memcache->flush();
$memcache->connect("127.0.0.1", "11211");

$key = "10";

$cache_result = $memcache->get($key);

if($cache_result) {
    $data = $cache_result;
    echo "<h1>cache data</h1>";
} else {
    mysql_connect("localhost", "root", "root") or die(mysql_error());
    mysql_select_db("newstest");
    mysql_set_charset("utf8");

    $q = mysql_query("SELECT * `news`, `categories` WHERE `publish_area` LIKE 'headline' AND `published`='1' AND `category_parent`=`category_id` AND `publish_date` <= '".date("Y-m-d H:i:s")."' ORDER BY publish_date DESC LIMIT 0,15");

    while($o = mysql_fetch_object($q)) {
        $data[] = $o;
    }

    $memcache->set($key, $data);
    echo "<h1>mysql data</h1>";

    mysql_close();
}

foreach($data as $o) {
    print_r($o);    
}

&GT;

从MySQL提取的数据大约是120 KB

memcached cachesize = 1024也尝试了2048

memcached maxconn = 4096

似乎mysql服务器上的高流量引起的问题将在memcache之后修复,但memcache断开是当前的问题。好像这次mysql服务器可以工作但是memcache会断开连接。

任何想法都会有用。感谢。

0 个答案:

没有答案