redhat as 6.2 memcached安装总结
Memcached是什么?
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。 Memcached由Danga Interactive开发,其最新版本发布于2010年,作者为Anatoly Vorobey和Brad Fitzpatrick。用于提升LiveJournal . com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。 Memcached由Danga Interactive开发,其最新版本发布于2010年,作者为Anatoly Vorobey和Brad Fitzpatrick。用于提升LiveJournal . com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。
如何使用memcached-Server端?
在服务端运行:
# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211 这将会启动一个占用2G内存的进程,并打开11211端口用于接收请求。由于32位系统只能处理4G内存的寻址,所以在大于4G内存使用PAE的32位服务器上可以运行2-3个进程,并在不同端口进行监听。
# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211 这将会启动一个占用2G内存的进程,并打开11211端口用于接收请求。由于32位系统只能处理4G内存的寻址,所以在大于4G内存使用PAE的32位服务器上可以运行2-3个进程,并在不同端口进行监听。
如何使用memcached-Client端?
在应用端包含一个用于描述Client的Class后,就可以直接使用,非常简单。
PHP Example: $options["servers"] = array("192.168.1.41:11211", "192.168.1.42:11212"); $options["debug"] = false; $memc = new MemCachedClient($options); $myarr = array("one","two", 3); $memc->set("key_one", $myarr); $val = $memc->get("key_one"); print $val[0]."\n"; // prints 'one‘ print $val[1]."\n"; // prints 'two‘ print $val[2]."\n"; // prints 3
在应用端包含一个用于描述Client的Class后,就可以直接使用,非常简单。
PHP Example: $options["servers"] = array("192.168.1.41:11211", "192.168.1.42:11212"); $options["debug"] = false; $memc = new MemCachedClient($options); $myarr = array("one","two", 3); $memc->set("key_one", $myarr); $val = $memc->get("key_one"); print $val[0]."\n"; // prints 'one‘ print $val[1]."\n"; // prints 'two‘ print $val[2]."\n"; // prints 3
一个用PHP编写的可视化的MemCached管理系统
MemAdmin是一款可视化的Memcached管理与监控工具,使用PHP开发,体积小,操作简单。
主要功能: 服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新 服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控 支持数据遍历,方便对存储内容进行监视
支持条件查询,筛选出满足条件的KEY或VALUE 数组、JSON等序列化字符反序列显示 兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外) 支持服务器连接池,多服务器管理切换方便简洁
http://pecl.php.net/package/memcache
1.[root@localhost html]# cat /etc/yum.repos.d/ 本地源仓库
backup/ redhat.repo test.repo
[root@localhost html]# cat /etc/yum.repos.d/test.repo
[test]
name=test
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgfile=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
backup/ redhat.repo test.repo
[root@localhost html]# cat /etc/yum.repos.d/test.repo
[test]
name=test
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgfile=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
2.[root@localhost memcache-3.0.6]# mount /dev/cdrom //挂载iso9660光盘镜像
mount: block device /dev/sr0 is write-protected, mounting read-only
3.[root@localhost memcache-3.0.6]# ls /mnt /查看/mnt目录是否挂载
EULA RELEASE-NOTES-es-ES.html RELEASE-NOTES-ru-RU.html
GPL RELEASE-NOTES-fr-FR.html RELEASE-NOTES-si-LK.html
HighAvailability RELEASE-NOTES-gu-IN.html RELEASE-NOTES-ta-IN.html
p_w_picpaths RELEASE-NOTES-hi-IN.html RELEASE-NOTES-te-IN.html
isolinux RELEASE-NOTES-it-IT.html RELEASE-NOTES-zh-CN.html
LoadBalancer RELEASE-NOTES-ja-JP.html RELEASE-NOTES-zh-TW.html
media.repo RELEASE-NOTES-kn-IN.html repodata
Packages RELEASE-NOTES-ko-KR.html ResilientStorage
README RELEASE-NOTES-ml-IN.html RPM-GPG-KEY-redhat-beta
RELEASE-NOTES-as-IN.html RELEASE-NOTES-mr-IN.html RPM-GPG-KEY-redhat-release
RELEASE-NOTES-bn-IN.html RELEASE-NOTES-or-IN.html Server
RELEASE-NOTES-de-DE.html RELEASE-NOTES-pa-IN.html TRANS.TBL
RELEASE-NOTES-en-US.html RELEASE-NOTES-pt-BR.html
EULA RELEASE-NOTES-es-ES.html RELEASE-NOTES-ru-RU.html
GPL RELEASE-NOTES-fr-FR.html RELEASE-NOTES-si-LK.html
HighAvailability RELEASE-NOTES-gu-IN.html RELEASE-NOTES-ta-IN.html
p_w_picpaths RELEASE-NOTES-hi-IN.html RELEASE-NOTES-te-IN.html
isolinux RELEASE-NOTES-it-IT.html RELEASE-NOTES-zh-CN.html
LoadBalancer RELEASE-NOTES-ja-JP.html RELEASE-NOTES-zh-TW.html
media.repo RELEASE-NOTES-kn-IN.html repodata
Packages RELEASE-NOTES-ko-KR.html ResilientStorage
README RELEASE-NOTES-ml-IN.html RPM-GPG-KEY-redhat-beta
RELEASE-NOTES-as-IN.html RELEASE-NOTES-mr-IN.html RPM-GPG-KEY-redhat-release
RELEASE-NOTES-bn-IN.html RELEASE-NOTES-or-IN.html Server
RELEASE-NOTES-de-DE.html RELEASE-NOTES-pa-IN.html TRANS.TBL
RELEASE-NOTES-en-US.html RELEASE-NOTES-pt-BR.html
4.[root@localhost memcache-3.0.6]# rpm -q libevent//libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。
package libevent is not installed
5.[root@localhost memcache-3.0.6]# yum -y install libevent//安装libevent包
Loaded plugins: product-id, subscription-manager
Updating certificate-based repositories.
test | 4.0 kB 00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package libevent.i686 0:1.4.13-1.el6 will be installed
--> Finished Dependency Resolution
Loaded plugins: product-id, subscription-manager
Updating certificate-based repositories.
test | 4.0 kB 00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package libevent.i686 0:1.4.13-1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
libevent i686 1.4.13-1.el6 test//test本地源 67 k
Package Arch Version Repository Size
================================================================================
Installing:
libevent i686 1.4.13-1.el6 test//test本地源 67 k
Transaction Summary
================================================================================
Install 1 Package(s)
================================================================================
Install 1 Package(s)
Total download size: 67 k
Installed size: 226 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
perl-Proc-Daemon-0.14-1.el6.remi.noarch has missing requires of perl(Proc::ProcessTable)
Installing : libevent-1.4.13-1.el6.i686 1/1
Installed products updated.
Installed size: 226 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
perl-Proc-Daemon-0.14-1.el6.remi.noarch has missing requires of perl(Proc::ProcessTable)
Installing : libevent-1.4.13-1.el6.i686 1/1
Installed products updated.
Installed:
libevent.i686 0:1.4.13-1.el6
libevent.i686 0:1.4.13-1.el6
Complete!//安装成功!
6.[root@localhost memcache-3.0.6]# ls -al /usr/lib|grep libevent//查看libevent依赖库
lrwxrwxrwx 1 root root 21 Apr 20 23:24 libevent-1.4.so.2 -> libevent-1.4.so.2.1.3
-rwxr-xr-x 1 root root 108948 Dec 16 2009 libevent-1.4.so.2.1.3
lrwxrwxrwx 1 root root 26 Apr 20 23:24 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.1.3
-rwxr-xr-x 1 root root 37004 Dec 16 2009 libevent_core-1.4.so.2.1.3
lrwxrwxrwx 1 root root 27 Apr 20 23:24 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.1.3
-rwxr-xr-x 1 root root 84228 Dec 16 2009 libevent_extra-1.4.so.2.1.3
7.[root@localhost html]# yum list|grep memcache//查看memcache软件包
libmemcached.i686 0.31-1.1.el6 @test
memcached.i686 1.4.4-3.el6 @test
php-pecl-memcache.i686 3.0.5-3.el6 @test
python-memcached.noarch 1.43-5.3.el6 @test
8.[root@localhost html]# rpm -q libmemcache//查看是否安装如果没安装直接yum -y libmemcached memcached php-pecl-memcache python-memcached
package libmemcache is not installed
[root@localhost html]# rpm -q libmemcached
libmemcached-0.31-1.1.el6.i686
[root@localhost html]# rpm -q memcached//已经安装
memcached-1.4.4-3.el6.i686
[root@localhost html]# chkconfig --list memcached//查看启动级别
memcached 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost html]# chkconfig memcached on//设置runlevel 3启动
[root@localhost html]# service memcached start//启动服务memcached服务
Starting memcached: [ OK ]
package libmemcache is not installed
[root@localhost html]# rpm -q libmemcached
libmemcached-0.31-1.1.el6.i686
[root@localhost html]# rpm -q memcached//已经安装
memcached-1.4.4-3.el6.i686
[root@localhost html]# chkconfig --list memcached//查看启动级别
memcached 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost html]# chkconfig memcached on//设置runlevel 3启动
[root@localhost html]# service memcached start//启动服务memcached服务
Starting memcached: [ OK ]
9.[root@localhost html]# netstat -ntlp//查看端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 1899/memcached
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1201/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1190/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1400/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1308/mysqld
tcp 0 0 :::11211 :::* LISTEN 1899/memcached //已经启动memcached服务11211端口
tcp 0 0 :::139 :::* LISTEN 1426/smbd
tcp 0 0 :::80 :::* LISTEN 1410/httpd
tcp 0 0 :::22 :::* LISTEN 1190/sshd
tcp 0 0 ::1:25 :::* LISTEN 1400/master
tcp 0 0 :::445 :::* LISTEN 1426/smbd
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 1899/memcached
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1201/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1190/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1400/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1308/mysqld
tcp 0 0 :::11211 :::* LISTEN 1899/memcached //已经启动memcached服务11211端口
tcp 0 0 :::139 :::* LISTEN 1426/smbd
tcp 0 0 :::80 :::* LISTEN 1410/httpd
tcp 0 0 :::22 :::* LISTEN 1190/sshd
tcp 0 0 ::1:25 :::* LISTEN 1400/master
tcp 0 0 :::445 :::* LISTEN 1426/smbd
10.测试
[root@localhost html]#memcached -d -m 15360 -u root -l 192.168.40.40 -p 11211 -c 40960//这里设置的11211端口默认连接数是40960 可以直接echo "xxx">>/etc/rc.local中去
[root@localhost html]# telnet 192.168.40.40 11211 //登录memcached
Trying 192.168.40.40...
Connected to 192.168.40.40.
Escape character is '^]'.
stats
STAT pid 1899
STAT uptime 1589
STAT time 1334940144
STAT version 1.4.4
STAT pointer_size 32
STAT rusage_user 0.000999
STAT rusage_system 0.000000
STAT curr_connections 10
STAT total_connections 12
STAT connection_structures 11
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 70
STAT bytes_written 797
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT evictions 0
END
Trying 192.168.40.40...
Connected to 192.168.40.40.
Escape character is '^]'.
stats
STAT pid 1899
STAT uptime 1589
STAT time 1334940144
STAT version 1.4.4
STAT pointer_size 32
STAT rusage_user 0.000999
STAT rusage_system 0.000000
STAT curr_connections 10
STAT total_connections 12
STAT connection_structures 11
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 70
STAT bytes_written 797
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT evictions 0
END
如何查看memcache服务器端版本: ./memcached -h
memcache的运行状态可以方便的用 stats 命令显示。
首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。
这些状态的说明如下:
首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。
这些状态的说明如下:
pid memcache服务器的进程ID
uptime 服务器已经运行的秒数
time 服务器当前的unix时间戳
version memcache版本
pointer_size 当前操作系统的指针大小(32位系统一般是32bit)
rusage_user 进程的累计用户时间
rusage_system 进程的累计系统时间
curr_items 服务器当前存储的items数量
total_items 从服务器启动以后存储的items总数量
bytes 当前服务器存储items占用的字节数
curr_connections 当前打开着的连接数
total_connections 从服务器启动以后曾经打开过的连接数
connection_structures 服务器分配的连接构造数
cmd_get get命令(获取)总请求次数
cmd_set set命令(保存)总请求次数
get_hits 总命中次数
get_misses 总未命中次数
evictions 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read 总读取字节数(请求字节数)
bytes_written 总发送字节数(结果字节数)
limit_maxbytes 分配给memcache的内存大小(字节)
threads 当前线程数
uptime 服务器已经运行的秒数
time 服务器当前的unix时间戳
version memcache版本
pointer_size 当前操作系统的指针大小(32位系统一般是32bit)
rusage_user 进程的累计用户时间
rusage_system 进程的累计系统时间
curr_items 服务器当前存储的items数量
total_items 从服务器启动以后存储的items总数量
bytes 当前服务器存储items占用的字节数
curr_connections 当前打开着的连接数
total_connections 从服务器启动以后曾经打开过的连接数
connection_structures 服务器分配的连接构造数
cmd_get get命令(获取)总请求次数
cmd_set set命令(保存)总请求次数
get_hits 总命中次数
get_misses 总未命中次数
evictions 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read 总读取字节数(请求字节数)
bytes_written 总发送字节数(结果字节数)
limit_maxbytes 分配给memcache的内存大小(字节)
threads 当前线程数
11.管理工具memadmin
MemAdmin是一款可视化的Memcached管理与监控工具,基于 PHP5 & JQuery 开发,体积小,操作简单。
主要功能:
•服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新
•服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控
•支持数据遍历,方便对存储内容进行监视
•支持条件查询,筛选出满足条件的KEY或VALUE
•数组、JSON等序列化字符反序列显示
•兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外)
•支持服务器连接池,多服务器管理切换方便简洁
项地址: http://www.junopen.com/memadmin/
演示: http://demo.junopen.com/memadmin_demo/index.php
•服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控
•支持数据遍历,方便对存储内容进行监视
•支持条件查询,筛选出满足条件的KEY或VALUE
•数组、JSON等序列化字符反序列显示
•兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外)
•支持服务器连接池,多服务器管理切换方便简洁
项地址: http://www.junopen.com/memadmin/
演示: http://demo.junopen.com/memadmin_demo/index.php
memcached是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但目前被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权释出。
memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。
memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于memcached通常只是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程式码更新memcached内的资料。
memcached具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/
把memadmin-1.0.9 用ssh上传到网站根目录然后查看config.php默认为admin,admin
把memadmin-1.0.9 用ssh上传到网站根目录然后查看config.php默认为admin,admin