外观
Memcached Linux安装
安装前准备
1. 系统要求
- 操作系统:支持主流Linux发行版,如CentOS 7/8、Ubuntu 18.04/20.04/22.04、Debian 9/10/11
- 内存:根据业务需求配置,建议至少2GB
- CPU:至少2核,推荐4核以上
- 磁盘:基本不需要高速存储,普通SATA磁盘即可
- 网络:千兆或万兆网卡
2. 依赖检查
Memcached依赖libevent库,安装前需要确保系统已安装或可以安装该库。
安装方法
1. 包管理器安装(推荐)
CentOS/RHEL
CentOS 7
bash
# 安装EPEL仓库
yum install -y epel-release
# 安装Memcached和libevent
yum install -y memcached libevent libevent-devel
# 启动Memcached服务
systemctl start memcached
# 设置开机自启
systemctl enable memcached
# 检查服务状态
systemctl status memcachedCentOS 8/RHEL 8
bash
# 安装Memcached和libevent
dnf install -y memcached libevent libevent-devel
# 启动Memcached服务
systemctl start memcached
# 设置开机自启
systemctl enable memcached
# 检查服务状态
systemctl status memcachedUbuntu/Debian
bash
# 更新包列表
apt update
# 安装Memcached和libevent
apt install -y memcached libevent-2.1-7 libevent-dev
# 启动Memcached服务
systemctl start memcached
# 设置开机自启
systemctl enable memcached
# 检查服务状态
systemctl status memcached2. 源码编译安装
如果需要安装特定版本或自定义编译选项,可以选择源码编译安装。
步骤1:安装依赖
CentOS/RHEL
bash
yum install -y gcc gcc-c++ make libevent libevent-develUbuntu/Debian
bash
apt update
apt install -y build-essential libevent-dev步骤2:下载源码
bash
# 创建工作目录
mkdir -p /usr/local/src/memcached
cd /usr/local/src/memcached
# 下载源码包(以1.6.22版本为例)
wget https://memcached.org/files/memcached-1.6.22.tar.gz
# 解压源码包
tar -zxvf memcached-1.6.22.tar.gz
cd memcached-1.6.22步骤3:编译安装
bash
# 配置编译选项
./configure --prefix=/usr/local/memcached
# 编译
make -j$(nproc)
# 安装
make install步骤4:创建系统服务
创建systemd服务文件:
bash
cat > /etc/systemd/system/memcached.service << EOF
[Unit]
Description=Memcached
After=network.target
[Service]
Type=simple
User=memcached
Group=memcached
ExecStart=/usr/local/memcached/bin/memcached -u memcached -p 11211 -m 64 -c 1024
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF创建memcached用户:
bash
useradd -r -s /sbin/nologin memcached启动服务并设置开机自启:
bash
systemctl daemon-reload
systemctl start memcached
systemctl enable memcached
systemctl status memcached配置Memcached
1. 配置文件位置
- 包管理器安装:配置文件通常位于
/etc/sysconfig/memcached(CentOS/RHEL)或/etc/memcached.conf(Ubuntu/Debian) - 源码编译安装:需要手动创建配置文件
2. 主要配置参数
CentOS/RHEL配置文件(/etc/sysconfig/memcached)
bash
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""Ubuntu/Debian配置文件(/etc/memcached.conf)
bash
# 监听端口
-p 11211
# 监听地址(默认监听所有地址)
-l 0.0.0.0
# 最大连接数
-c 1024
# 缓存大小(MB)
-m 64
# 运行用户
-u memcached
# 日志文件
logfile /var/log/memcached.log
# 详细程度(0-5)
-v3. 常用配置选项
| 参数 | 描述 | 默认值 |
|---|---|---|
| -p | 监听端口 | 11211 |
| -l | 监听地址 | 0.0.0.0 |
| -d | 以守护进程方式运行 | 不启用 |
| -u | 运行用户 | memcached |
| -m | 缓存大小(MB) | 64 |
| -c | 最大连接数 | 1024 |
| -t | 工作线程数 | 4 |
| -f | Slab增长因子 | 1.25 |
| -n | 初始Chunk大小(字节) | 48 |
| -L | 启用大内存页支持 | 不启用 |
| -B | 协议类型(text/binary) | text |
| -S | 启用SASL认证 | 不启用 |
| -t | TLS证书文件路径 | 不启用 |
4. 配置示例
生产环境配置(CentOS/RHEL)
bash
PORT="11211"
USER="memcached"
MAXCONN="2048"
CACHESIZE="2048"
OPTIONS="-l 192.168.1.100 -t 8 -f 1.1 -n 64"生产环境配置(Ubuntu/Debian)
bash
-p 11211
-l 192.168.1.100
-c 2048
-m 2048
-u memcached
-t 8
-f 1.1
-n 64
logfile /var/log/memcached.log
-vv启动和停止Memcached
1. 使用systemctl管理服务
bash
# 启动服务
systemctl start memcached
# 停止服务
systemctl stop memcached
# 重启服务
systemctl restart memcached
# 重新加载配置(仅当配置文件支持热重载时)
systemctl reload memcached
# 检查服务状态
systemctl status memcached
# 查看服务日志
journalctl -u memcached -f2. 手动启动(仅用于测试)
bash
# 基本启动
memcached -u memcached -d
# 自定义配置启动
memcached -u memcached -d -p 11211 -m 2048 -c 2048 -l 192.168.1.100验证安装
1. 检查进程
bash
# 查看Memcached进程
ps aux | grep memcached
# 查看监听端口
netstat -tlnp | grep 11211
# 或使用ss命令
ss -tlnp | grep 112112. 测试连接
使用telnet测试连接:
bash
# 连接Memcached
telnet 127.0.0.1 11211
# 测试SET命令
set test 0 3600 5
hello
# 测试GET命令
get test
# 退出连接
quit使用memcached-tool测试:
bash
# 查看Memcached状态
memcached-tool 127.0.0.1:11211 stats
# 查看Slab分配情况
memcached-tool 127.0.0.1:11211 display防火墙配置
1. 开放Memcached端口
CentOS/RHEL 7
bash
# 开放11211端口
firewall-cmd --permanent --add-port=11211/tcp
# 重新加载防火墙规则
firewall-cmd --reload
# 查看已开放的端口
firewall-cmd --list-portsCentOS/RHEL 8/Ubuntu 20.04+/Debian 10+
bash
# 安装iptables(如果未安装)
apt install -y iptables iptables-persistent
# 开放11211端口
iptables -A INPUT -p tcp --dport 11211 -j ACCEPT
# 保存规则
netfilter-persistent save2. 限制访问IP
为了安全起见,建议只允许特定IP访问Memcached:
使用firewalld
bash
# 只允许192.168.1.0/24网段访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="11211" accept'
firewall-cmd --reload使用iptables
bash
# 只允许192.168.1.0/24网段访问
iptables -A INPUT -p tcp --dport 11211 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 11211 -j DROP
netfilter-persistent save日志配置
1. 配置日志文件
CentOS/RHEL
修改/etc/sysconfig/memcached文件,添加日志配置:
bash
OPTIONS="-l 127.0.0.1 -v >> /var/log/memcached.log 2>&1"Ubuntu/Debian
修改/etc/memcached.conf文件,添加日志配置:
bash
logfile /var/log/memcached.log
verbose2. 日志轮转
创建日志轮转配置文件:
bash
cat > /etc/logrotate.d/memcached << EOF
/var/log/memcached.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 memcached memcached
postrotate
systemctl reload memcached > /dev/null 2>&1 || true
endscript
}
EOF性能优化
1. 系统参数优化
调整文件描述符限制
bash
# 修改/etc/security/limits.conf文件
cat >> /etc/security/limits.conf << EOF
memcached soft nofile 65535
memcached hard nofile 65535
EOF优化TCP参数
bash
# 修改/etc/sysctl.conf文件
cat >> /etc/sysctl.conf << EOF
# 增加TCP连接队列长度
net.core.somaxconn = 65535
# 增加TCP最大连接数
net.ipv4.tcp_max_syn_backlog = 65535
# 减少TCP连接超时时间
net.ipv4.tcp_fin_timeout = 30
# 允许重用TIME_WAIT状态的连接
net.ipv4.tcp_tw_reuse = 1
# 增加TCP接收和发送缓冲区大小
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
EOF
# 应用系统参数
sysctl -p2. Memcached参数优化
- 增加缓存大小:根据业务需求调整-m参数
- 调整工作线程数:根据CPU核心数调整-t参数,建议设置为CPU核心数的1-2倍
- 优化Slab增长因子:根据数据大小分布调整-f参数
- 启用大内存页:使用-L参数启用大内存页支持
- 调整最大连接数:根据并发需求调整-c参数
常见问题及解决方案
1. Memcached启动失败
症状
systemctl status memcached显示Active: failed解决方案
- 检查配置文件语法错误
- 检查端口是否被占用:
netstat -tlnp | grep 11211 - 检查用户权限:确保memcached用户存在且有权限访问相关目录
- 查看日志文件:
journalctl -u memcached -f
2. 无法连接到Memcached
症状
telnet 127.0.0.1 11211显示Connection refused解决方案
- 检查Memcached服务是否正在运行:
systemctl status memcached - 检查监听地址和端口:确保配置文件中的-l参数正确
- 检查防火墙设置:确保11211端口已开放
- 检查SELinux设置:如果SELinux已启用,确保允许Memcached访问网络
3. Memcached性能不佳
症状
- 响应时间长
- 缓存命中率低
- CPU或内存使用率高
解决方案
- 优化Memcached配置参数
- 调整系统参数
- 增加Memcached节点数量
- 优化数据大小和键设计
- 检查网络连接质量
升级Memcached
1. 包管理器升级
CentOS/RHEL
bash
# 升级Memcached
yum update -y memcached
# 重启服务
systemctl restart memcachedUbuntu/Debian
bash
# 更新包列表
apt update
# 升级Memcached
apt upgrade -y memcached
# 重启服务
systemctl restart memcached2. 源码升级
bash
# 停止服务
systemctl stop memcached
# 下载新版本源码
cd /usr/local/src/memcached
wget https://memcached.org/files/memcached-1.6.23.tar.gz
# 解压并编译安装
tar -zxvf memcached-1.6.23.tar.gz
cd memcached-1.6.23
./configure --prefix=/usr/local/memcached
make -j$(nproc)
make install
# 启动服务
systemctl start memcached
# 检查版本
/usr/local/memcached/bin/memcached -V卸载Memcached
1. 包管理器卸载
CentOS/RHEL
bash
# 停止服务
systemctl stop memcached
# 禁用开机自启
systemctl disable memcached
# 卸载Memcached
yum remove -y memcached
# 删除配置文件
rm -f /etc/sysconfig/memcachedUbuntu/Debian
bash
# 停止服务
systemctl stop memcached
# 禁用开机自启
systemctl disable memcached
# 卸载Memcached
apt purge -y memcached
# 删除配置文件
rm -f /etc/memcached.conf2. 源码卸载
bash
# 停止服务
systemctl stop memcached
# 禁用开机自启
systemctl disable memcached
# 删除服务文件
rm -f /etc/systemd/system/memcached.service
# 删除安装目录
rm -rf /usr/local/memcached
# 删除源码目录
rm -rf /usr/local/src/memcached
# 删除用户
userdel -r memcached常见问题(FAQ)
Q1: 如何查看Memcached的版本?
A1: 可以使用以下命令查看Memcached的版本:
bash
# 包管理器安装
memcached -V
# 源码编译安装
/usr/local/memcached/bin/memcached -VQ2: 如何修改Memcached的监听端口?
A2: 修改配置文件中的-p参数,然后重启服务:
- CentOS/RHEL:修改/etc/sysconfig/memcached文件中的PORT参数
- Ubuntu/Debian:修改/etc/memcached.conf文件中的-p参数
Q3: 如何限制Memcached只监听本地地址?
A3: 修改配置文件中的-l参数为127.0.0.1,然后重启服务:
- CentOS/RHEL:修改/etc/sysconfig/memcached文件中的OPTIONS参数
- Ubuntu/Debian:修改/etc/memcached.conf文件中的-l参数
Q4: 如何增加Memcached的缓存大小?
A4: 修改配置文件中的-m参数,然后重启服务:
- CentOS/RHEL:修改/etc/sysconfig/memcached文件中的CACHESIZE参数
- Ubuntu/Debian:修改/etc/memcached.conf文件中的-m参数
Q5: 如何查看Memcached的运行状态?
A5: 可以使用以下命令查看Memcached的运行状态:
bash
# 查看服务状态
systemctl status memcached
# 查看Memcached统计信息
memcached-tool 127.0.0.1:11211 stats
# 查看Slab分配情况
memcached-tool 127.0.0.1:11211 displayQ6: 如何配置Memcached以守护进程方式运行?
A6: 在配置文件中添加-d参数:
- CentOS/RHEL:修改/etc/sysconfig/memcached文件中的OPTIONS参数
- Ubuntu/Debian:修改/etc/memcached.conf文件,添加-d参数
Q7: 如何配置Memcached使用SASL认证?
A7: 配置Memcached使用SASL认证的步骤如下:
- 安装SASL依赖
- 配置SASL用户和密码
- 修改Memcached配置,添加-S参数启用SASL认证
- 重启Memcached服务
Q8: 如何监控Memcached的性能?
A8: 可以使用以下工具监控Memcached的性能:
- memcached-tool:Memcached自带的监控工具
- Prometheus + Grafana:全面监控和可视化
- Zabbix:系统级监控和告警
- Nagios:网络监控和告警
Q9: 如何优化Memcached的性能?
A9: 优化Memcached性能的方法包括:
- 调整Memcached配置参数,如缓存大小、工作线程数、Slab增长因子等
- 优化系统参数,如文件描述符限制、TCP参数等
- 优化数据大小和键设计
- 增加Memcached节点数量
- 使用高效的客户端库
Q10: 如何备份Memcached的数据?
A10: Memcached本身不支持数据持久化,可以通过以下方法备份数据:
- 使用第三方工具,如memcached-dump
- 在应用层实现数据备份,定期将数据写入磁盘
- 考虑使用Redis,它支持多种持久化方式
