memcached漏洞修复

[不指定 2016/06/10 13:20 | by admin ]
默认在启动是没有绑定ip,是匿名使用,所以需指定内网的IP使用,可以把启动方式修改下如:
memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
这是只给本机使用,防火墙只要保持原来的端口即可,不需要另开11211端口
如果是给其他机子使用,那启动方式为:
memcached -d -m 1024 -u root -l 192.168.1.2 -p 11211 -c 1024 -P /tmp/memcached.pid
这是给192.168.1.2 这台机子使用,防火墙需另开放11211端口给192.168.1.2,即:
iptables -A INPUT -p tcp -s 192.168.1.2 --dport 11211 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.1.2 --dport 11211 -j ACCEPT

如果在配置memcached时使用了启动脚本,则作如下修改:
编辑/etc/init.d/memcached

找到:
### Default variables
PORT="11211"
USER="nobody"
MAXCONN="10240"
CACHESIZE="64"
OPTIONS=""
SYSCONFIG="/etc/sysconfig/memcached"
在最后添加一行,改成:
### Default variables
PORT="11211"
USER="nobody"
MAXCONN="10240"
CACHESIZE="64"
OPTIONS=""
SYSCONFIG="/etc/sysconfig/memcached"
IP="127.0.0.1"


找到:
  daemon $dirmem$prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE $OPTIONS
改成:
  daemon $dirmem$prog -d -p $PORT -u $USER -l $IP -c $MAXCONN -m $CACHESIZE $OPTIONS
保存退出,重启memcached服务即可

Tags:

在windows下使用memcached教程

[不指定 2010/08/12 10:45 | by admin ]
在windows下使用memcached教程

一、php扩展的安装
下载地址:http://downloads.php.net/pierre/
下载合适所用php版本,解压出php_memcache.dll,并拷入php\ext目录。
修改php.ini
加入extension=php_memcache.dll
重启iis

二、memcached服务端的安装
下载地址:http://jehiah.cz/projects/memcached-win32/
如:memcached-1.2.1-win32.zip,并解压
把memcached.exe拷入指定位置,如d:\memcached
打开cmd,进入d:\memcached
memcached.exe -d install
memcached.exe -d start
这时候memcached就可以正常使用了。
默认启动为使用内存: 64M
如需自行加大内存需自行运行memcached
停掉安装的服务或卸载安装的服务,进入d:\memcached
memcached.exe -m 128
这样,memcached就可以使用128M内存了。这时候你会发现这个CMD窗口一直开着,并不能关闭,关闭窗口memcached程序也会退出。

解决方法:
下载RunHiddenConsole.exe,并拷入d:\memcached
RunHiddenConsole.exe memcached.exe -m 128

附:memcached的基本设置:

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

附:php扩展中的配置信息


[Memcache]
; 一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,
; 它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

; 是否在遇到错误时透明地向其他服务器进行故障转移。
memcache.allow_failover = On

; 接受和发送数据时最多尝试多少个服务器,只在打开memcache.allow_failover时有效。
memcache.max_failover_attempts = 20

; 数据将按照此值设定的块大小进行转移。此值越小所需的额外网络传输越多。
; 如果发现无法解释的速度降低,可以尝试将此值增加到32768。
memcache.chunk_size = 8192

; 连接到memcached服务器时使用的默认TCP端口。
memcache.default_port = 11211

; 控制将key映射到server的策略。默认值"standard"表示使用先前版本的老hash策略。
; 设为"consistent"可以允许在连接池中添加/删除服务器时不必重新计算key与server之间的映射关系。
;memcache.hash_strategy = "standard"; 控制将key映射到server的散列函数。默认值"crc32"使用CRC32算法,而"fnv"则表示使用FNV-1a算法。
; FNV-1a比CRC32速度稍低,但是散列效果更好。
;memcache.hash_function = "crc32"

;memcache也可以作为session的存储模块,具体参看:memcache PHP 的 session.save_handler.

本内容为原创内容,转载请注明:
本文来自http://blog.gsywx.com

监控memcached的使用情况

[不指定 2010/08/11 21:53 | by admin ]
php程序中的加速有eaccerator、xcache、memcached,自从DZX开始支持使用memcached,越来越多的人使用memcached,今天要讲的是如何掌握memcached的内存使用状况。
前提是已安装好memcache的php扩展,并安装memcached服务程序,并且已经启动,正常工作。
一、从php官方下载memcache的扩展包,下载地址如下:
http://pecl.php.net/package/memcache
如我们下载:memcache-3.0.4.tgz
解压后得到:memcache.php
打开memcache.php,设置上帐号、密码、连接信息
$VERSION='$Id: memcache.php,v 1.1.2.3 2008/09/11 19:23:48 mikl Exp $';

define('ADMIN_USERNAME','memcache');   // Admin Username
define('ADMIN_PASSWORD','password');    // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

如以上内容设置如下:

$VERSION='$Id: memcache.php,v 1.1.2.3 2008/09/11 19:23:48 mikl Exp $';

define('ADMIN_USERNAME','admin');   // 此处设置登录用户名
define('ADMIN_PASSWORD','123456');    // 此处设置登录用户密码
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // 此处设置连接信息
#$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // 只使用一个进程,此处屏蔽,否则可以设置多个连接信息

保存后把memcache.php文件拷贝到网站目录里,在IE的地址里打开,输入用户名密码后就可以看到memcached的使用情况了。

如下图所示:


点击在新窗口中浏览此图片

memcached服务端安装脚本

[不指定 2010/07/08 11:31 | by admin ]
自己写的一个简单的脚本,执行安装即可
本内容为原创内容,转载请注明:
本文来自http://blog.gsywx.com

#!/bin/bash
clear
echo "--------------------memcached安装脚本,按任意键继续---------------------"
get_char()
  {
  SAVEDSTTY=`stty -g`
  stty -echo
  stty cbreak
  dd if=/dev/tty bs=1 count=1 2> /dev/null
  stty -raw
  stty echo
  stty $SAVEDSTTY
  }
  echo ""
  echo "安装memcached,连接并发数1024,内存64M,按任意键继续......"
  char=`get_char`

tar zxvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure
make
make install
cd ../
echo "/usr/local/lib" >/etc/ld.so.conf.d/libevent-i386.conf
ldconfig
#默认安装在/usr/local/lib/

tar zxvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure --prefix=/web/memcached
make
make install
cd ../
#默认安装在/usr/local/bin/

#创建简单的memcache启动停止脚本(未有进程判断)
cat >>/memcached<#!/bin/bash

start(){
        echo "开始启动memcached ......"
        /web/memcached/bin/memcached -d -m 64 -u nobody -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
        echo "OK"
        }

stop() {
        echo "正在停止memcached ......"
        killall -9 memcached
        rm -f  /tmp/memcached.pid
        echo "OK"
        }

restart() {
        stop
        start
        }

case "" in
  start)
start
;;
  stop)
stop
;;
  restart)
stop
start
;;
*)
        echo $ "Usage: $0 {start|stop|restart}"
;;
esac
EOF
sed -i 's#""#"$1"#g' /memcached
chmod +x /memcached
/memcached start
cp -f memcache.php /home/wwwroot/htdocs/

sleep 1
echo "删除安装临时文件............."
rm -Rf libevent-1.4.13-stable
rm -Rf memcached-1.4.5


memcache.php内容为:

$mem = new Memcache;
$mem->connect("127.0.0.1",11211);
$mem->set('key', "This is tell you: memcached rum success!", 0, 60);
$val = $mem->get('key');
echo $val;
?>
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]