ARTICLE

DMIT 故障排查指南:SSH/Web/数据库/网络/OOM

按故障类型提供排查流程:SSH 连接、502/504/403、数据库、磁盘、网络与内存问题。

故障排查的基本方法

DMIT 云服务器遇到问题时,系统化的排查方法比随机尝试更有效。本文按常见故障类型提供排查流程,帮助你快速定位和解决问题。

核心原则:先看日志,再看资源,最后改配置。

SSH 连接问题

无法 SSH 登录

排查步骤:

# 1. 检查网络可达性
ping <server_ip>

# 2. 检查端口是否开放
nc -zv <server_ip> 22

# 3. 如果端口不通,通过 DMIT 控制面板的 VNC/Console 登录
# 4. 检查 SSH 服务状态
systemctl status sshd

# 5. 检查 SSH 配置
grep -E "Port|PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config

# 6. 检查防火墙
iptables -L -n | grep 22
ufw status

# 7. 查看 SSH 日志
journalctl -u sshd --since "1 hour ago" -n 50

常见原因:防火墙规则变更、SSH 端口修改后未放行、密钥配置错误。

SSH 登录慢

# 常见原因:DNS 反向解析超时
# 编辑 /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no

# 重启 SSH
systemctl restart sshd

Web 服务问题

502 Bad Gateway

Nginx 无法连接到后端服务:

# 1. 检查后端服务是否运行
systemctl status your-app
ps aux | grep your-app

# 2. 检查后端端口是否监听
ss -tlnp | grep :3000   # 假设后端端口 3000

# 3. 检查 Nginx 错误日志
tail -20 /var/log/nginx/error.log

# 4. 手动测试后端
curl -I http://127.0.0.1:3000

# 5. 检查 Nginx upstream 配置
grep -A5 "upstream" /etc/nginx/sites-enabled/*

504 Gateway Timeout

后端响应超时:

# 增加 Nginx 超时
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;

# 或优化后端处理速度
# 检查后端是否有死循环或慢查询

403 Forbidden

# 检查文件权限
ls -la /var/www/
# Web 服务器用户需要读取权限
chown -R www-data:www-data /var/www/
find /var/www/ -type d -exec chmod 755 {} \;
find /var/www/ -type f -exec chmod 644 {} \;

# 检查 Nginx 配置中的 deny 指令
grep -r "deny" /etc/nginx/

数据库问题

连接数超限

# MySQL
mysql -e "SHOW VARIABLES LIKE 'max_connections'"
mysql -e "SHOW STATUS LIKE 'Threads_connected'"

# 查看连接来源
mysql -e "SHOW PROCESSLIST" | awk '{print $3}' | sort | uniq -c | sort -rn

# PostgreSQL
psql -c "SELECT count(*) FROM pg_stat_activity"
psql -c "SELECT state, count(*) FROM pg_stat_activity GROUP BY state"

查询慢

# MySQL 慢查询日志
grep long_query_time /etc/mysql/*.cnf
tail -20 /var/log/mysql/slow.log

# 开启慢查询日志(如未开启)
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

# PostgreSQL 慢查询
# 编辑 postgresql.conf
log_min_duration_statement = 1000  # 记录 >1s 的查询

# 分析慢查询
EXPLAIN ANALYZE SELECT ...;

磁盘问题

磁盘空间不足

# 查看磁盘使用
df -h

# 找出大文件/目录
du -sh /* 2>/dev/null | sort -rh | head -10
du -sh /var/* 2>/dev/null | sort -rh | head -10

# 清理常见空间占用
journalctl --vacuum-size=500M    # systemd 日志
apt clean                        # APT 缓存
find /var/log -name "*.gz" -mtime +30 -delete  # 旧日志

Inode 耗尽

# 查看 inode 使用
df -i

# 找出小文件最多的目录
find / -xdev -type f | cut -d/ -f2 | sort | uniq -c | sort -rn | head

网络问题

服务外部不可达

# 1. 检查服务是否监听 0.0.0.0(而非仅 127.0.0.1)
ss -tlnp | grep :80

# 2. 检查防火墙
ufw status
iptables -L -n

# 3. 检查 DMIT 安全组(如有)
# 4. 从外部测试
curl -I http://<server_ip>:80

DNS 解析失败

# 检查 DNS 配置
cat /etc/resolv.conf

# 测试解析
nslookup example.com
dig example.com

# 如果 DNS 不可用,临时使用公共 DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf

性能问题排查

系统卡顿

# 查看 CPU/内存/负载
top -b -n1 | head -5

# 查看 I/O 等待
top -b -n1 | grep "%Cpu" | awk '{print "I/O wait: " $8}'

# 找出占用资源最多的进程
ps aux --sort=-%cpu | head -5
ps aux --sort=-%mem | head -5

更多性能调优方法见《性能调优指南》。

OOM(内存不足)问题

# 查看 OOM 记录
dmesg | grep -i "out of memory"
dmesg | grep -i "oom killer"

# 查看被杀的进程
journalctl --since "1 hour ago" | grep -i "killed process"

# 解决方案:
# 1. 增加交换空间
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

# 2. 优化应用内存使用
# 3. 升级到更高内存的套餐

排查检查清单

问题第一步关键命令
SSH 不通ping + ncsystemctl status sshd
502检查后端服务ss -tlnp + nginx error log
504检查后端响应时间nginx error log + 后端日志
403检查权限ls -la + chown/chmod
DB 连接超限查看连接数SHOW PROCESSLIST / pg_stat_activity
磁盘满df -hdu -sh + 清理日志/缓存
服务不可达检查监听 + 防火墙ss -tlnp + ufw status
OOMdmesg grep oom加 swap 或升级套餐
系统卡顿topps aux --sort=-%cpu

相关文章:《SSH 安全加固》、IPv6 配置教程、《监控与备份》、《初次部署检查清单》。

本文核对日期:2026-08-18。排查命令以你的系统版本为准。

NEXT STEP

看完教程,选一台合适的 DMIT

用套餐快照按预算与线路筛选,或直接前往官网查看实时库存。

推广披露:通过链接购买可能为推荐者带来佣金,不会增加你的购买价格。