Memcached 高性能的分布式的内存对象缓存
# yum install memcached
# rpm -ql memcached
# cat /etc/sysconfig/memcached \\ 环境配置文件 在此修改 启动信息 注01
PORT="11211"
USER="memcached"
MAXCONN="1024" \\ 最大并发连接数
CACHESIZE="64" \\ 内存空间大小
OPTIONS="-f 1.2" \\ 手动指明 -f为1.2
# systemctl restart memcached
# netstat -tunlp \\ tcp udp 的11211端口都被监听
# telnet localhost 11211 \\ 连接本地的 memcached
stats \\ 显示统计命令
# systemctl stop memcached
# memcached -u memcached -vv \\ 可以看到 chunk size
slab class 1: chunk size 96 perslab 10922 \\ 第一级的chunk size 大小96 有10922个
slab class 2: chunk size 120 perslab 8738 \\ 第二级大小120 有8738个
# memcached -umemcached -vv -f 1.1 \\ -f 指定为 1.1倍 为临时有效
# memcached-tool 127.0.0.1 \\ 显示 工作状态信息
# Item_Size Max_age Pages Count Full? Evicted Evict_Time OOM
1 96B 11s 1 1 yes 0 0 0
1 表示slab class 的编号 第一类
Item_Size 表示 chunk的大小为96B
Max_age 缓存对象的生存时间 11s 就是 已经使用了多长时间了
Pages 分配给slab的内存页数
Count slab内的记录数
Full slab内是否仍有空闲chunk
Evicted
# systemctl restart memcached
注:
❶ memcached 基本参数
-s 基于套接字访问
-l 监听的地址
-d 把memcached运行一个守护进程
-u 以哪个用户运行memcached
-m 使用的内存空间 默认64M
-c 最大并发连接数 默认1024
-p 监听tcp哪一个端口上 默认11211
-U 监听udp哪一个端口上 默认11211 可以是0关掉udp
-M 禁止使用lru算法清理老内存的
-r 最大可允许使用的核心文件大小 在内核中调整 一般不需要调整
-f 增长因子 默认为1.25倍 分配的每一类对象叫做内存chunk 多个同类叫一个slab class
-v 详解格式显示
-vv 更详细
-i 显示许可证
-t 用于提供的线程数 默认4个
-b 等待队列的长度
-B 协议类型 支持文本格式 和 二进制格式
-S 简单认证安全层
❷ memcached 其他参数 说明
page 分配给slab用于再次分割为chunk的内存空间
chunk 用于缓存缓存对象的空间
slab class 特定大小的chunk组合而成的组
Memcached 旁挂式缓存 旁路式缓存 NoSQL
varnish 代理式缓存
实例 01 Tomcat节点 把会话保存在memcached上 已实现session server功能 \\ 基于Tomcat章节的 1 2 实验
memcached 缓存 session id 实现 Tomcat session 保持
① 基于以上实验 一台 Nginx/Apache 做负载均衡 反代到后端 两台Apache服务器的80端口在反代到8080端口的Tomcat服务器
暂时配置两台Memcached服务器与两台后端服务器为同一服务器
② 两台Tomcat服务器配置 关键配置
到此网站下载五个包
https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration 代码托管站点
https://repo1.maven.org/maven2/de/javakaffee/msm/
https://repo1.maven.org/maven2/net/spy/spymemcached/
https://repo1.maven.org/maven2/javolution/javolution/5.5.1/
memcached-session-manager-2.3.2.jar
memcached-session-manager-tc8-2.3.2.jar
msm-javolution-serializer-2.1.1.jar
spymemcached-2.12.3.jar
javolution-5.5.1.jar
# cd /usr/local/tomcat/lib
# rz \\ 五个包 导入到此目录下 对于编译安装的Tomcat
# vim /usr/local/tomcat/conf/server.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" \\ <Host 下 <Context 下 添加
memcachedNodes="n1:192.168.10.10:11211,n2:192.168.10.13:11211" \\ 两个memcached服务器
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
# catalina.sh configtest
# catalina.sh start \\ 访问 192.168.10.10 测试
③ 两台Memcached 服务器配置 \\ 仅仅为此实验使用 关于Memcached详细资料参见 以上Memcached介绍
# yum install memcached
# systemctl restart memcached
# netstat -tunlp \\ tcp udp 的11211端口都被监听
# memcached-tool 127.0.0.1 \\ 显示 工作状态信息 配合 访问 192.168.10.10 测试