关于云主机cache占比特别大处理

本文介绍了服务器缓存过高时的处理方法,包括清理缓存、检查占用高进程,重点在于journal日志管理,提供了解决方案:创建目录、修改配置以持久化存储日志并清空内存中的数据。

问题:

服务器用一段时间,buff/cache就会特别高

处理办法:

1.清理,但是发现很大一部分清理不掉

2.查看占用过高的进程,然后进行处理

3.清理journal日志

1.清理
创建脚本(直接执行也行,我是创建脚本便于后期清理,也可将脚本加入到定时任务中)

vi clear_cahe.sh

#!/bin/bash
echo "开始清除缓存"
sync;sync;sync
sleep 10
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
sync
授权

chmod 755 clear_cache.sh

然后执行,./clear_chache.sh

清理后发现,的确清理了一部分,但是很大一部分还是清理不掉

因此这个不能完全解决问题

2.查看占用过高的进程,然后进行处理
github 地址:https://github.com/silenceshell/hcache  
直接下载:
wget https://silenceshell-1255345740.cos.ap-shanghai.myqcloud.com/hcache 
chmod 755 hcache
mv hcache /usr/local/bin
使用hcache -top 10 查看占用最大的进程

cd /usr/local/bin

./hcache --top 10

发现 journal日志占用过高

3.清理journal日志
systemd-journal 的坑
默认的配置文件,配置了 Storage=auto。含义为:

如果设置为 volatile,journal 将会保存在内存中,使用位于内存盘的 /run/log/journal 目录(会自动创建)
如果设置为 persistent,journal 将会保存在磁盘中,使用 /var/log/journal 目录 (会自动创建),如果自动创建失败,以及针对启动早期磁盘尚未挂载成功的部分日志, 仍然记录在内存盘。
如果设置为 auto,那么,如果 /var/log/journal 目录存在,则使用该目录记录到磁 盘,如果目录不存在(不会自动创建),则使用内存盘。
如果设置为 none,完全不记录任何日志(但是仍然可以转发给 rsyslog)
默认是 auto
而 默认并不会创建 /var/log/journal 目录,所以都在内存中,占中就会很高

清理 journal 的内存
清除到只剩下最新的 100M 空间:journalctl --vacuum-size=100M
清除到只剩下最近两小时:journalctl --vacuum-time=2h
将内存盘中的数据刷到硬盘:journalctl --flush
或者采用很黄很暴力的清除方法(不推荐):rm -rf /run/log/journal && systemctl restart systemd-journal
建议的解决办法:
以下方法任选一种即可

方法一:创建 /var/log/journal 目录,然后使用 journalctl --flush 将内存盘中 的数据刷到硬盘
方法二:修改 /etc/systemd/journald.conf,配置 Storage=persistent,然后重启 systemd-journal 并使用 journalctl --flush 将内存盘中的数据刷到硬盘
方法三:修改 /etc/systemd/journald.conf,配置 Storage=none,然后重启 systemd-journal
重启命令

systemctl restart systemd-journald.service
我是更改了配置,并且创建了/var/log/journal,然后清理了journal的内存

清理后journal 降下来了

其他的程序再处理即可

在 L20 服务器中,如果发现 `pip`(Python 包管理工具)在缓存中比过高,可能意味着系统在频繁使用 `pip` 安装或更新 Python 包,这可能导致缓存资源被用,影响整体性能和资源利用率。针对这一问题,可以从以下几个方面进行优化: ### 1. 限制 pip 缓存小 `pip` 默认会将下载的包缓存到本地,以便下次安装时可以避免重新下载。可以通过配置 `pip.conf` 文件或使用命令行参数来限制缓存小[^1]。 ```bash pip cache --help ``` 使用以下命令清理缓存: ```bash pip cache purge ``` 也可以通过设置环境变量来控制缓存行为: ```bash export PIP_CACHE_DIR=/path/to/custom/cache ``` ### 2. 使用镜像源加速包下载 频繁从官方源下载 Python 包会导致缓存增长迅速。可以通过使用国内镜像源(如清华、阿里云等)来加速下载并减少本地缓存依赖[^1]。 ```bash pip install some-package -i https://pypi.tuna.tsinghua.edu.cn/simple ``` 也可以将镜像源配置为全局设置: ```bash pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 3. 启用离线安装与预下载 在开发环境中预先下载所需包,并将 `.whl` 文件打包分发至服务器,使用 `pip install --no-index` 进行离线安装,避免每次安装时都访问网络和缓存[^1]。 ```bash pip install --no-index --find-links=/path/to/packages some-package ``` ### 4. 使用虚拟环境隔离依赖 为每个项目创建独立的虚拟环境,避免全局安装导致的缓存膨胀。使用 `venv` 或 `virtualenv` 管理虚拟环境[^1]。 ```bash python -m venv myenv source myenv/bin/activate pip install some-package ``` ### 5. 定期清理与监控 设置定时任务定期清理 `pip` 缓存,例如使用 `cron` 任务: ```bash 0 0 * * 0 /usr/bin/pip cache purge ``` 同时,可以使用监控工具(如 `htop`、`iotop`、`du` 等)监控缓存目录的使用情况,及时发现异常增长。 ### 6. 使用容器化部署 通过 Docker 等容器化技术,在构建镜像阶段完成依赖安装,运行阶段使用只读文件系统或临时缓存目录,避免缓存持续增长。 ```Dockerfile FROM python:3.9-slim COPY requirements.txt . RUN pip install -r requirements.txt CMD ["python", "app.py"] ``` ### 7. 配置操作系统级缓存策略 对于 Linux 系统,可以通过 `sysctl` 调整 `vm.dirty_ratio` 和 `vm.dirty_background_ratio` 等参数,控制内核对缓存的管理策略,减少缓存对内存的用压力。 ```bash sysctl -w vm.dirty_ratio=10 sysctl -w vm.dirty_background_ratio=5 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值