2017-08-15 16 views
0

我们正在运行一些Ubuntu的 14.04服务器,不知怎的,创建一个新的cgroup中为每个创建的SSH会话,但遗憾的是该cgroup中不被删除当会话关闭了。Ubuntu的服务器:每个SSH-连接创建非删除cgroup中

由于我们还对这些服务器和一些混帐的客户端轮询每分钟我们最终有数以千计的僵尸的cgroup的每周git的用户一旦运行一个GitLab

大约每月一次,我们到达cgroup-limit导致与码头工人问题说:

启动容器过程中造成 “process_linux.go:258:应用 cgroup的配置过程中造成\” 的mkdir /SYS/FS/cgroup中/内存/泊坞窗/ 28485427c2689d7a2c4be83990af873e9ab5732c5c741f0d10bfc3ba21b1d167: 没有剩余空间设备\“”

看来这个问题只发生在具有安装搬运工服务器。其他服务器正确删除cgroups。也许码头安装依赖关系是这里的问题。 Docker本身正在正确删除它的cgroup。

我们知道的问题的唯一解决方法是重新启动机器。

这里的docker version输出:

Client: 
Version:  17.03.1-ce 
API version: 1.27 
Go version: go1.7.5 
Git commit: c6d412e 
Built:  Mon Mar 27 17:10:36 2017 
OS/Arch:  linux/amd64 

Server: 
Version:  17.03.1-ce 
API version: 1.27 (minimum version 1.12) 
Go version: go1.7.5 
Git commit: c6d412e 
Built:  Mon Mar 27 17:10:36 2017 
OS/Arch:  linux/amd64 
Experimental: false 

这里通过uname -adocker info

Containers: 3 
Running: 3 
Paused: 0 
Stopped: 0 
Images: 4576 
Server Version: 17.03.1-ce 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 2359 
Dirperm1 Supported: true 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
Volume: local 
Network: bridge host macvlan null overlay 
Swarm: inactive 
Runtimes: runc 
Default Runtime: runc 
Init Binary: docker-init 
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc 
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe 
init version: 949e6fa 
Security Options: 
apparmor 
Kernel Version: 4.2.0-42-generic 
Operating System: Ubuntu 14.04.5 LTS 
OSType: linux 
Architecture: x86_64 
CPUs: 8 
Total Memory: 31.33 GiB 
Name: repo 
ID: KT6V:FLPI:EHY6:2FSP:NEBT:T65W:23IX:IRFK:AQM5:KSLM:FQ3D:57X5 
Docker Root Dir: /var/lib/docker 
Debug Mode (client): false 
Debug Mode (server): false 
Registry: https://index.docker.io/v1/ 
WARNING: No swap limit support 
Experimental: false 
Insecure Registries: 
127.0.0.0/8 
Live Restore Enabled: false 

内核版本输出:

Linux的回购4.2.0-42泛型#49〜14.04.1-Ubuntu SMP Wed Jun 29 20:22:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

cat /proc/cgroups后〜3h内的正常运行时间:

#subsys_name hierarchy num_cgroups enabled 
cpuset 1 623 1 
cpu 2 627 1 
cpuacct 3 623 1 
blkio 4 623 1 
memory 5 627 1 
devices 6 623 1 
freezer 7 623 1 
net_cls 8 623 1 
perf_event 9 623 1 
net_prio 10 623 1 
hugetlb 11 623 1 

这些623名的cgroup 616都在其中/sys/fs/cgroup/memory/user/998.user用户998是git的用户。

+0

粘贴'docker info'和'docker version'的输出日志。也是什么版本的内核? –

回答

0

我知道这不是理想的解决方案,因为它只消除症状而不是原因,但现在我创建了一个可以通过cron运行的脚本。

#!/bin/bash 
set -e 
CGROUP_BASE_DIR="/sys/fs/cgroup" 
declare -a CGROUP_SUBSYSTEMS=('cpuset' 'cpu' 'cpuacct' 'blkio' 'memory' 'devices' 'freezer' 'net_cls' 'perf_event' 'net_prio' 'hugetlb') 

for CGROUP_SUBSYSTEM in "${CGROUP_SUBSYSTEMS[@]}"; do 
     cd "${CGROUP_BASE_DIR}/${CGROUP_SUBSYSTEM}" 
     for OLD_CGROUP in $(find user/*.user/*.session -type d -ctime +10); do 
       /usr/bin/cgdelete -r "${CGROUP_SUBSYSTEM}:/${OLD_CGROUP}" 
     done 
done 

这将搜索所有会话的cgroup年龄超过10天,他们用cgdeletecgroup-tools删除。

相关问题