我觉得在我的网站中Memcached的速度比Mysql查询慢。请看我的网站,我从新文物的表演截图。

我不知道如何在我的CentOS服务器中优化memcached。请查看Memcached的配置和性能屏幕截图。我觉得总连接数很高。

请参阅下面的实时统计数据

以下是如何在我的网站中使用Memcached
<?php
class dataCache {
function setMemData($key, $var, $flag = false, $expire = 36000) {
global $memcache;
if (!$memcache) {
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die("Could not connect");
}
if ($result = $memcache->set($key, $var, $flag, time() + $expire)) {
return TRUE;
} else {
return FALSE;
}
}
function getMemData($key) {
global $memcache;
if (!$memcache) {
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die("Could not connect");
}
if ($data = $memcache->get($key)) {
return $data;
} else {
return FALSE;
}
}
function delMemData($key) {
global $memcache;
if (!$memcache) {
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die("Could not connect");
}
if ($result = $memcache->delete($key)) {
return TRUE;
} else {
return FALSE;
}
}
}在每个PHP页面的末尾,我使用以下方式关闭连接
if(isset($memcache)){
$memcache->close();
}这台服务器需要更多的内存吗?如何减少连接的数量?有什么改善表现的建议吗?
编辑??编辑?
如前所述,当前连接为9,总连接为671731。连接的数量可能不是问题。
发布于 2014-02-25 23:47:37
这里有几个方法可以让这件事更快地进行。
您的总连接实际上是为memcached创建了多少个连接。
首先,使用memcached php扩展而不是memcache扩展。它们是完全不同的,而且memcache扩展几乎完全被废弃了。Memcached扩展使用libmemcached,它速度非常快,具有更好的特性(如二进制协议、更好的超时、udp)。
第二,使用持久连接。对于您的工作负载,这些应该是完全足够的,并减少了不断重新连接到memcache的成本。
第三,使用多重get/set/delete/delete/等。如果你知道你的请求中需要10个内存缓存密钥,那就一次请求全部10个。如果您在任何时候遍历memcache请求,这会给您带来很大的性能提升。
另一个警告是,NewRelic历来不善于报告在memcache中花费的时间。它可能会错误地报告在php中花费的时间,就像在memcache中花费的时间一样,这是由于zend引擎是如何使用的。
至于为什么memcache和mysql的性能如此接近,您很可能运行相当简单的查询,因此在memcache和mysql上花费的时间是相当的。memcache非常快,但它也是一个网络跳,这通常是等待Memcache所花费的最大时间。您可以尝试在本地运行memcache,或者在只有一个服务器的情况下使用APC而不是memcache。
https://stackoverflow.com/questions/22027848
复制相似问题