关闭

日志压缩资源消耗优化: Linux CGroup 的使用

标签: 优化linuxCGroup日志压缩
366人阅读 评论(0) 收藏 举报
分类:

我们有一个系统,本身压力比较大,平常 CPU 占用率在 60% 左右。在整点之后的日志压缩时,CPU 占用率更是飙到来 80%,造成系统 Load 经常报警,烦不胜烦。

CPU 占用率监控
Load 监控

使用 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 监控也是如此。
优化前后 CPU 使用率监控
优化前后系统 Load 监控

CGroup 用法可以看文章:DOCKER基础技术:LINUX CGROUP,通俗易懂。

0
0
查看评论

压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明

针对DB备份文件进行压缩时,CPU资源限制的几种方法测试,有效解决压缩备份文件时导致的CPU负载过高问题。
  • xueyanzhang
  • xueyanzhang
  • 2017-08-14 14:39
  • 691

通过GZIP优化性能

原创文章,转载请注明               gzip为一种压缩技术,在网络http传输中得到应用。gzip需要web容器,浏览器的支持。   &...
  • guduyishuai
  • guduyishuai
  • 2017-03-03 15:41
  • 706

linux解压日志文件并查看

unzip解压日志文件并查看 was_wcm@x-shcs-wcm-v01:/apps/logs/idm/20170823> ls idm.0.log.zip was_wcm@x-shcs-wcm-v01:/apps/logs/idm/20170823> unzip idm.0.log....
  • a1638221216
  • a1638221216
  • 2017-08-25 16:17
  • 194

Linux查看压缩日志文件命令zcat tar gz grep

Linux查看压缩日志文件命令zcat tar gz grep IT黑名单 http://www.itblacklist.cn/
  • MDJHZGJ
  • MDJHZGJ
  • 2017-11-04 23:12
  • 600

logrotate linux 系统日志备份压缩工具

logrotate 是作为linux系统日志的管理工具存在。它可以轮换、压缩、邮件系统日志文件。默认的 logrotate 被加入 cron 的 /etc/cron.daily 中作为每日任务执行。 /etc/logrotate.conf 为其默认配置文件指定每个日志文件的默认规则。 /etc/...
  • wanglei_storage
  • wanglei_storage
  • 2015-11-26 15:38
  • 2475

图片要启用gzip压缩吗?绝对不要!

经常有人在群里问到,图片到底需不需要启用GZip压缩?我不止一次的回答说,图片是不需要启用GZip压缩的。今天,我把此问题写作成文,给大家分析一下为什么图片不需要启用GZip压缩。 图片启用GZip压缩会适得其反 一些开发者使用HTTP压缩那些已经本地已经压缩过的文件,而这些已经压缩过的...
  • yu870646595
  • yu870646595
  • 2016-07-28 10:06
  • 1319

日志压缩资源消耗优化: Linux CGroup 的使用

我们有一个系统,本身压力比较大,平常 CPU 占用率在 60% 左右。在整点之后的日志压缩时,CPU 占用率更是飙到来 80%,造成系统 Load 经常报警,烦不胜烦。 使用 top 命令查看后发现,gzip 压缩进程占用 CPU 资源过多,于是想到了利用 CGroup 来限制日志压缩进程的资源...
  • hustspy1990
  • hustspy1990
  • 2017-09-08 23:41
  • 366

cgroups介绍及安装配置使用详解

1 cgroup简介     Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linu...
  • JesseYoung
  • JesseYoung
  • 2014-09-05 10:39
  • 12560

Cgroup基本使用

About在我的上一篇博文中已经谈到了Cgroup的一些基本概念,以及这些概念之间的关系。那么本篇博文则从感性一面来看看Cgroup到底是个啥?在linux系统上Cgroup被实现为一个filesystem,通过对filesystem的基本操作(mount,read,write等),来 实现对Cg...
  • zhangyifei216
  • zhangyifei216
  • 2015-11-05 13:52
  • 2637

Nginx Gzip 压缩配置

随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢? gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多。gzip的...
  • myweishanli
  • myweishanli
  • 2013-10-23 02:19
  • 631
    个人资料
    • 访问:604287次
    • 积分:7751
    • 等级:
    • 排名:第3263名
    • 原创:192篇
    • 转载:6篇
    • 译文:0篇
    • 评论:99条
    博客专栏
    文章分类
    最新评论