centos缓存实战案例
导读:CentOS缓存实战案例汇总 1. Redis键值缓存实战(提升数据库访问性能) Redis是高性能键值存储系统,常用于缓存数据库热点数据,减少MySQL等后端数据库的压力。 操作步骤: 安装Redis:通过yum install -y...
CentOS缓存实战案例汇总
1. Redis键值缓存实战(提升数据库访问性能)
Redis是高性能键值存储系统,常用于缓存数据库热点数据,减少MySQL等后端数据库的压力。
操作步骤:
- 安装Redis:通过
yum install -y gcc make
安装依赖,下载并编译Redis源码(如wget http://download.redis.io/releases/redis-6.2.6.tar.gz
,tar xzf redis-6.2.6.tar.gz
,cd redis-6.2.6 & & make & & sudo make install
)。 - 配置Redis:编辑
/etc/redis/redis.conf
,设置bind 0.0.0.0
(允许远程访问)、daemonize yes
(后台运行)、requirepass yourpassword
(设置访问密码)。 - 集成应用层:在应用代码中通过Redis SDK(如PHP的
phpredis
、Python的redis-py
)连接Redis,将高频查询结果(如商品分类、用户会话)存储为键值对,设置合理过期时间(如EXPIRE key 3600
表示1小时后自动删除)。
效果:某电商网站使用Redis缓存商品详情后,数据库查询负载下降60%,页面响应时间从2秒缩短至0.5秒。
2. Nginx反向代理缓存实战(减轻后端服务器压力)
Nginx可作为反向代理服务器,缓存后端应用(如PHP、Java)的响应结果,避免重复请求穿透到后端。
操作步骤:
- 配置缓存路径:编辑
/etc/nginx/nginx.conf
,添加proxy_cache_path
指令定义缓存目录和参数(如proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off
,表示缓存目录为/var/cache/nginx
,键区域my_cache
大小为10MB,最大缓存1GB,60分钟未访问则失效)。 - 设置缓存规则:在
server
或location
块中添加proxy_cache my_cache
(启用缓存)、proxy_cache_valid 200 302 30m
(200/302状态码缓存30分钟)、add_header X-Proxy-Cache $upstream_cache_status
(返回缓存状态,HIT/MISS/EXPIRED)。
效果:某博客站点配置Nginx缓存后,静态页面(如HTML、CSS)的缓存命中率达85%,后端PHP-FPM进程数从10个减少到2个,服务器负载降低50%。
3. Varnish HTTP缓存实战(加速动态内容交付)
Varnish是专门的HTTP缓存服务器,擅长缓存动态内容(如PHP、Python生成的页面),提升高并发场景下的响应速度。
操作步骤:
- 安装Varnish:通过
yum install -y varnish
安装,默认监听80端口(需调整Nginx/Apache端口为8080)。 - 配置缓存规则:编辑
/etc/varnish/default.vcl
,设置后端服务器(backend default { .host = "127.0.0.1"; .port = "8080"; }
)、缓存逻辑(如sub vcl_backend_response { if (beresp.http.Cache-Control ~ "no-cache") { set beresp.uncacheable = true; } }
,避免缓存动态内容)。 - 启动服务:执行
systemctl start varnish
和systemctl enable varnish
,通过varnishstat
命令监控缓存命中率(cache_hit
/cache_miss
)。
效果:某新闻门户使用Varnish缓存动态页面后,高峰时段并发请求处理能力从1000 QPS提升至3000 QPS,页面加载时间从1.5秒缩短至0.3秒。
4. 系统级缓存优化实战(调整内核参数提升效率)
CentOS系统内核提供多种缓存机制(如页缓存、目录项缓存),通过调整内核参数可优化缓存使用效率。
关键操作:
- 调整
vm.swappiness
:该参数控制内核使用交换分区(Swap)的倾向(0-100,值越低越倾向于使用物理内存)。编辑/etc/sysctl.conf
,添加vm.swappiness=10
(减少Swap使用,避免磁盘I/O瓶颈),执行sysctl -p
生效。 - 优化脏页回收:
vm.dirty_ratio
(脏页占内存的最大比例,默认40%)和vm.dirty_background_ratio
(后台写回脏页的阈值,默认10%)。调整为vm.dirty_ratio=40
、vm.dirty_background_ratio=10
,平衡内存利用率与磁盘写入性能。 - 使用
noatime
挂载:编辑/etc/fstab
,为根分区添加noatime
选项(如/dev/sda1 / ext4 defaults,noatime 1 1
),减少文件访问时间戳的更新,降低磁盘I/O。
效果:某数据库服务器调整swappiness
后,Swap使用率从15%降至2%,内存利用率提升10%;调整脏页参数后,数据库写入延迟从5ms降低至2ms。
5. 应用层缓存清理实战(释放内存与磁盘空间)
定期清理应用层缓存(如YUM/DNF、Nginx、MySQL)可避免缓存占用过多资源,影响系统性能。
常见清理操作:
- 清理YUM/DNF缓存:执行
sudo yum clean all
(CentOS 7及以下)或sudo dnf clean all
(CentOS 8及以上),删除已下载的软件包缓存。 - 清理Nginx缓存:删除
/var/cache/nginx
目录下的缓存文件(sudo rm -rf /var/cache/nginx/*
),释放磁盘空间。 - 清理MySQL缓存:停止MySQL服务(
sudo systemctl stop mysqld
),删除/var/lib/mysql
目录下的缓存文件(如ib_logfile*
),重启服务(sudo systemctl start mysqld
)。 - 自动清理脚本:编写Shell脚本(如
cleanCache.sh
),包含sync
(同步内存到磁盘)、echo 3 > /proc/sys/vm/drop_caches
(清理所有缓存),添加到crontab(0 */2 * * * /path/to/cleanCache.sh
),每2小时自动执行。
注意事项:清理缓存可能导致应用短暂重新加载数据,建议在业务低峰期执行。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos缓存实战案例
本文地址: https://pptw.com/jishu/726811.html