【发布时间】:2014-03-28 11:33:53
【问题描述】:
我感觉我网站中的 Memcached 的速度比 Mysql 查询慢。请看我从 New Relic 获得的网站性能截图。
我不知道如何优化我的 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();
}
这个服务器需要更多内存吗?如何减少连接数?有什么提高性能的建议吗?
-------------编辑------------
正如cmet所说,当前连接数为9。总连接数为671731。连接数可能不是问题。
【问题讨论】:
-
你能贴出你从 PHP 初始化你的 memcached 连接的代码吗?假设有 1 个 PHP 服务器和 1 个 memcached 服务器,那么连接太多了。
-
我认为这个问题可能更适合serverfault.com
-
@DanielWilliams,感谢您的建议。我刚刚添加了 PHP 代码。问题可能出在代码中。
-
@Don Li:“太多”太模糊了。你为什么这么认为? “这正是我想要的”连接数是多少? “我不知道如何减少连接”——正如我之前提到的——对于这个问题,唯一的答案是:只需关闭 memcached 服务器,连接数就会减少到理想的 0。
-
@Don Li:这是服务器启动后的连接数。根据您的屏幕截图,在过去 10 小时内。 “我觉得这可能会影响性能。” --- 当您讨论性能优化时,您应该相信数字而不是感觉。
标签: php performance memcached newrelic