美文网首页
cgroups 控制 java 程序失效问题

cgroups 控制 java 程序失效问题

作者: ab029ac3022b | 来源:发表于2018-10-11 23:02 被阅读32次

    使用 cgroups 时将进程放入控制组有三种方法:
    1 通过文件操作进行添加
    echo [PID] > /path/to/cgroup/tasks
    上述命令就是把进程ID打印到tasks中,如果tasks文件中已经有进程,需要使用">>"向后添加。
    通过cgclassify将进程添加到cgroup

    2 cgclassify -g subsystems:path_to_cgroup pidlist
    这个命令中,subsystems指的就是子系统(如果使用man命令查看,可能也会使用controllers表示)​​​,如果mount了多个,就是用","隔开的子系统名字作为名称,类似cgset命令。

    3 通过cgexec直接在cgroup中启动并执行进程
    cgexec -g subsystems:path_to_cgroup command arguments
    command和arguments就表示要在cgroup中执行的命令和参数。cgexec常用于执行临时的任务。

    当控制 java 程序时,前两种方法都没有效果,只能用第三种方法

    使用的 pid 是 top 指令显示出的 java 进程 pid



    使用前两种方法时只能在 cgroup 的 tasks 中写入一个主线程的 pid

    资源控制也没有效果


    而使用第三种方法时,可以把 jvm 运行的所有相关线程写入 tasks,资源控制也生效了


    环境 阿里云服务器 Centos7

    相关文章

      网友评论

          本文标题:cgroups 控制 java 程序失效问题

          本文链接:https://www.haomeiwen.com/subject/wnjiaftx.html