root@debian:~# free -m
total used free shared buff/cache available
内存: 64318 23054 826 16 40437 40593
解读:
total:总计物理内存容量64GB
used:已使用内存容量23GB
free:空闲826MB
buff/cache:40GB
对操作系统来讲Mem的参数.buffers/cached 都是属于被使用,由此可见空闲内存太少,导致系统基本使用内存过少进而访问慢。
1.系统内运行的mariadb数据库及php组件,所以先优化mariadb
root@debian:/etc/mysql/mariadb.conf.d#
root@debian:/etc/mysql/mariadb.conf.d# vi 50-server.cnf
join_buffer_size = 4096M
innodb_buffer_pool_size = 10480M //原始为40480M 这里降低到10480M
root@debian:/etc/mysql/mariadb.conf.d# systemctl restart mysql.service
2.手动清空buffers/cached
root@debian:~# echo 1 > /proc/sys/vm/drop_caches
root@debian:~# echo 2 > /proc/sys/vm/drop_caches
root@debian:~# echo 3 > /proc/sys/vm/drop_caches
查看结果
root@debian:/etc/mysql/mariadb.conf.d# free -m
total used free shared buff/cache available
内存: 64318 1228 62804 16 285 62588
交换: 974 0 974
访问web页面速度明显提升,问题解决。
扩展:系统自动定期清除buffers/cached
> vim clean.sh
#!/bin/bash#每两小时清除一次缓存
echo "开始清除缓存"
sync;sync;sync #写入硬盘,防止数据丢失
sleep 20#延迟20秒
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
保存clean.sh
> chmod +x clean.sh
> crontab -e
# 每两小时执行一次
0 */2 * * * /opt/clean.sh
设置crond开机自启动及重启crond服务
systemctl restart cron.service
systemctl enable cron.service