首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Memcached性能

问Memcached性能
EN

Stack Overflow用户
提问于 2014-02-25 22:44:33
回答 1查看 8.2K关注 0票数 5

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

​

​

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

​

​

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

​

以下是如何在我的网站中使用Memcached

代码语言:javascript
复制
<?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页面的末尾,我使用以下方式关闭连接

代码语言:javascript
复制
if(isset($memcache)){                                                                 
     $memcache->close();
}

这台服务器需要更多的内存吗?如何减少连接的数量?有什么改善表现的建议吗?

编辑??编辑?

如前所述,当前连接为9,总连接为671731。连接的数量可能不是问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22027848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档