Debian下Tomcat资源隔离与限制实用指南
一、隔离思路与适用场景
二、systemd资源隔离配置
[Service]
User=tomcat
Group=tomcat
MemoryMax=2G
CPUQuota=50%
# 可选:文件句柄与进程数
LimitNOFILE=65536
LimitNPROC=4096
sudo systemctl daemon-reload
sudo systemctl restart tomcat9
三、Docker容器隔离配置
docker run -d --name my-tomcat \
-p 8080:8080 \
--memory="1g" \
--cpus="1.0" \
-u "1001:1001" \
tomcat:9.0
四、cgroups与ulimit的落地做法
# 安装工具
sudo apt-get update && sudo apt-get install -y cgroup-tools
# 创建 cgroup
sudo cgcreate -g cpu,memory:/tomcat1
# CPU:1 核 = 100000 微秒配额(100%)
echo 100000 | sudo tee /sys/fs/cgroup/cpu/tomcat1/cpu.cfs_quota_us
# 内存:1GB
echo 1073741824 | sudo tee /sys/fs/cgroup/memory/tomcat1/memory.limit_in_bytes
# 将 Tomcat 主进程加入 cgroup(PID 替换为实际值)
echo <PID> | sudo tee /sys/fs/cgroup/cpu/tomcat1/tasks
echo <PID> | sudo tee /sys/fs/cgroup/memory/tomcat1/tasks
ulimit -n 65536 # 打开文件数
ulimit -u 4096 # 用户进程数
ulimit -v 2097152 # 虚拟内存上限(KB)
五、权限边界与最小权限运行
sudo groupadd --system tomcat
sudo useradd --system -g tomcat -d /opt/tomcat -s /usr/sbin/nologin tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
sudo find /opt/tomcat -type f -exec chmod 644 {} \;
sudo find /opt/tomcat -type d -exec chmod 755 {} \;
sudo chmod 700 /opt/tomcat/bin/*.sh
[Service]
User=tomcat
Group=tomcat