CentOS 进程启动慢,原因很多,得先分清楚是系统启动慢还是某个进程启动慢。下面按常见场景给你一套排查 + 优化思路。
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain
重点看:
failed 或 timeout很多程序启动时会做反向 DNS 解析。
现象
getaddrinfo 慢解决
# 禁用 IPv6(如不用)
sysctl -w net.ipv6.conf.all.disable_ipv6=1
# /etc/resolv.conf
options timeout:1 attempts:1
Java / Python 程序可加:
java -Djava.net.preferIPv4Stack=true
systemctl show xxx.service -p After -p Requires
优化
After=Type=simple 而非 forkingTimeoutStartSec=10
iostat -x 1
优化
echo mq-deadline > /sys/block/sda/queue/scheduler
cat /proc/sys/kernel/random/entropy_avail
如果 < 100,启动会卡。
解决
yum install rng-tools
systemctl enable rngd
systemctl start rngd
Java 可加:
-Djava.security.egd=file:/dev/./urandom
getenforce
临时验证
setenforce 0
若明显变快:
env | wc -l
某些程序读 /etc/profile 很慢。
优化项:
-XmsAppCDS# 启动时间
systemd-analyze blame | head
# 看某服务
systemctl status xxx
journalctl -u xxx --since "5 min ago"
你可以直接告诉我:
我可以给你精确到命令级的优化方案。