日志压缩资源消耗优化: Linux CGroup 的使用
2017-09-08 23:41
447 查看
我们有一个系统,本身压力比较大,平常 CPU 占用率在 60% 左右。在整点之后的日志压缩时,CPU 占用率更是飙到来 80%,造成系统 Load 经常报警,烦不胜烦。
使用 top 命令查看后发现,gzip 压缩进程占用 CPU 资源过多,于是想到了利用 CGroup 来限制日志压缩进程的资源占用。具体脚本如下所示:
这个脚本首先在 /cgroup/cpu 下创建了一个组 log_limit ,用于设置提供给压缩进程的 CPU 占用率,这里限制 CPU 使用率上限为 20%。
由于日志压缩程序是由 crontab 定时执行的,进程 pid 是经常变化的,所以我们轮询检查 gzip 进程是否存在,若存在则将其 pid 放入 log_limit 组中。
优化前后的 CPU 使用率和 Load 监控对比,如下图所示。我们在11:50的时候开启优化,12点和13点的日志在压缩时,CPU占用率峰值明显低于9到11点时的峰值。Load 监控也是如此。
CGroup 用法可以看文章:DOCKER基础技术:LINUX CGROUP,通俗易懂。
使用 top 命令查看后发现,gzip 压缩进程占用 CPU 资源过多,于是想到了利用 CGroup 来限制日志压缩进程的资源占用。具体脚本如下所示:
#!/bin/bash # # log_gzip_cg_path="/cgroup/cpu/log_limit" if [ ! -d "$log_gzip_cg_path" ]; then echo "mkdir $log_gzip_cg_path" mkdir "$log_gzip_cg_path" else echo "$log_gzip_cg_path already exists" fi echo 20000 | sudo tee "$log_gzip_cg_path"/cpu.cfs_quota_us while true do sleep 3s # find the pid of grep program gz_pid=$(ps aux | grep gzip | grep -v find | grep -v grep | awk '{print $2}') if [ -n "$gz_pid" ]; then # check if duplicate, then jump if [ "$gz_pid" = "$prev_pid" ]; then continue fi # else add gz_pid to cpu control group: log_gzip prev_pid=$gz_pid; echo "gzip pid: "$gz_pid echo $gz_pid | sudo tee -a "$log_gzip_cg_path"/tasks fi done
这个脚本首先在 /cgroup/cpu 下创建了一个组 log_limit ,用于设置提供给压缩进程的 CPU 占用率,这里限制 CPU 使用率上限为 20%。
由于日志压缩程序是由 crontab 定时执行的,进程 pid 是经常变化的,所以我们轮询检查 gzip 进程是否存在,若存在则将其 pid 放入 log_limit 组中。
优化前后的 CPU 使用率和 Load 监控对比,如下图所示。我们在11:50的时候开启优化,12点和13点的日志在压缩时,CPU占用率峰值明显低于9到11点时的峰值。Load 监控也是如此。
CGroup 用法可以看文章:DOCKER基础技术:LINUX CGROUP,通俗易懂。
相关文章推荐
- Linux中使用cgroup来限制资源使用
- [前端优化]使用Microsoft Ajax Minifier对资源文件进行压缩优化
- Linux资源控制-使用cgroup控制CPU和内存
- Linux压缩打包命令使用方法
- linux使用日志
- Linux下syslog日志函数使用
- 在Linux下压缩文件 tar命令的使用
- 如何使用HTTP压缩优化服务器 推荐
- Linux压缩打包命令使用方法
- 针对ASP.NET页面实时进行GZIP压缩优化的几款压缩模块的使用简介及应用测试
- 针对ASP.NET页面实时进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(转载)
- Linux系统上使用smbclient访问Windows共享资源
- Linux压缩打包命令使用方法
- Linux压缩打包命令使用方法
- Linux压缩打包命令使用方法
- 使用HTTP压缩优化服务器
- 在Linux下压缩文件 tar命令的使用
- 如何在Suse_Linux9.0下使用Loadrunner监控服务器资源使用情况
- 优化Linux系统资源和加快启动速度的方法
- Linux压缩打包命令使用方法