我们在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会断开连接。
任何想法都会有用。感谢。