前情提要
我们组开发并维护的一个Linux上的服务,最近突然被隔壁团队测试同事发现会导致他们的业务进程启动不了。经过排查发现由于我们的服务是由systemd管理的,并且通过systemd的配置项来限制了服务整体的cpu和内存资源,这样在服务启动后会在 /sys/fs/cpu,cpuacct 目录下生成一个 system.slice 目录,这个目录下又会产生所有systemd管理的服务单元(service/unit)及其对应的cgroup文件,其中 cpu.rt_runtime_us 文件生成时会写入默认值0,这就导致限制了所有服务单元的实时进程无法分配到cpu时间,从而实时进程无法启动。
大约 6 分钟
