free -h查看缓存使用情况(buff/cache列),使用sync命令将缓存数据写入磁盘后,执行以下命令清理缓存:
echo 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_cachesecho 3 > /proc/sys/vm/drop_caches(生产环境需谨慎使用,避免影响正在运行的服务)。/etc/sysctl.conf文件,调整以下参数提升缓存效率:
vm.dirty_ratio=40(脏页占内存的最大比例,超过则触发写入磁盘,适当增加可减少I/O次数);vm.dirty_background_ratio=10(后台写入脏页的阈值,降低可提前释放内存);vm.vfs_cache_pressure=50(控制内核回收inode和dentry缓存的倾向,值越低缓存命中率越高);vm.swappiness=10(交换分区使用倾向,降低可减少磁盘交换,优先使用物理内存)。SET/GET命令缓存用户信息,设置合理的过期时间(如EXPIRE key 3600,1小时过期)。nginx.conf文件添加:proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location /static/ {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m; # 200/302状态码缓存10分钟
proxy_pass http://backend_server;
}
}
重启Nginx后,静态资源会被缓存到/tmp/nginx目录,提升访问速度。innodb_buffer_pool_size设置为8GB-12GB。/etc/my.cnf),设置innodb_buffer_pool_size为物理内存的50%-80%(如innodb_buffer_pool_size=8G),用于缓存数据和索引,减少磁盘I/O。max_connections(如max_connections=200),避免过多连接占用内存导致服务器崩溃;同时调整back_log(如back_log=1024),允许更多等待连接请求排队。query_cache_size=64M、query_cache_type=1),缓存SELECT查询结果,提升重复查询性能;但MySQL 8.0及以上版本已移除查询缓存,需使用其他缓存方案(如Redis)。WHERE、JOIN、ORDER BY的列创建索引(如user_id、order_date),加速数据定位。例如,CREATE INDEX idx_user_id ON users(user_id);。SHOW INDEX FROM table_name),删除未使用的索引。slow_query_log=1、long_query_time=2),使用EXPLAIN命令分析慢查询的执行计划,找出性能瓶颈(如全表扫描、未使用索引)。例如,EXPLAIN SELECT * FROM orders WHERE user_id=100;可查看是否使用了idx_user_id索引。orders表中增加user_name字段(冗余),避免每次查询订单时都JOINusers表。OPTIMIZE TABLE命令整理表碎片(如OPTIMIZE TABLE orders;),释放未使用的空间;定期备份数据库(如使用mysqldump或Percona XtraBackup),确保数据安全。