Redis是高性能键值存储系统,常用于缓存数据库热点数据,减少MySQL等后端数据库的压力。
操作步骤:
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)。/etc/redis/redis.conf,设置bind 0.0.0.0(允许远程访问)、daemonize yes(后台运行)、requirepass yourpassword(设置访问密码)。phpredis、Python的redis-py)连接Redis,将高频查询结果(如商品分类、用户会话)存储为键值对,设置合理过期时间(如EXPIRE key 3600表示1小时后自动删除)。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)。Varnish是专门的HTTP缓存服务器,擅长缓存动态内容(如PHP、Python生成的页面),提升高并发场景下的响应速度。
操作步骤:
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)。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。定期清理应用层缓存(如YUM/DNF、Nginx、MySQL)可避免缓存占用过多资源,影响系统性能。
常见清理操作:
sudo yum clean all(CentOS 7及以下)或sudo dnf clean all(CentOS 8及以上),删除已下载的软件包缓存。/var/cache/nginx目录下的缓存文件(sudo rm -rf /var/cache/nginx/*),释放磁盘空间。sudo systemctl stop mysqld),删除/var/lib/mysql目录下的缓存文件(如ib_logfile*),重启服务(sudo systemctl start mysqld)。cleanCache.sh),包含sync(同步内存到磁盘)、echo 3 > /proc/sys/vm/drop_caches(清理所有缓存),添加到crontab(0 */2 * * * /path/to/cleanCache.sh),每2小时自动执行。