服务无法启动
目录
诊断思路
网站地址无法访问,访问后台没有日志
1 使用telnet看看端口是否存活
2 如果存活,看看端口是什么进程,有可能端口被修改了
1. 使用 netstat 命令
netstat 是一个传统的网络工具,可用于显示网络连接、路由表、网络接口统计等信息。结合其他参数可以查找占用特定端口的进程。
示例命令
netstat -tulnp | grep :8080
命令解释
-t:显示 TCP 连接。-u:显示 UDP 连接。-l:只显示监听状态的连接。-n:以数字形式显示地址和端口号。-p:显示占用该端口的进程 ID 和进程名称。grep :8080:过滤出端口号为 8080 的连接信息。
输出示例
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1234/java
从输出结果可以看出,端口 8080 被进程 ID 为 1234 的 java 进程占用。
2. 使用 lsof 命令
lsof(list open files)命令用于列出当前系统打开文件的信息,网络连接也被视为文件,因此可以使用该命令查找占用特定端口的进程。
示例命令
lsof -i :8080
命令解释
-i:指定要显示的网络连接信息。
:8080:指定要查找的端口号。
输出示例
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1234 user 33u IPv6 12345 0t0 TCP *:8080 (LISTEN)
输出结果表明,端口 8080 被进程 ID 为 1234 的 java 进程占用。
3. 使用 ss 命令
ss 是一个用于显示套接字统计信息的工具,它比 netstat 更高效,并且在新的 Linux 系统中被广泛使用。
示例命令
ss -tulnp | grep :8080
命令解释
-t:显示 TCP 连接。-u:显示 UDP 连接。-l:只显示监听状态的连接。-n:以数字形式显示地址和端口号。-p:显示占用该端口的进程信息。grep :8080:过滤出端口号为 8080 的连接信息。
输出示例
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=1234,fd=33))
从输出可以得知,端口 8080 被进程 ID 为 1234 的 java 进程占用。
4. 使用 fuser 命令
fuser 命令用于查找使用指定文件或文件系统的进程,也可以用于查找占用特定端口的进程。
示例命令
fuser 8080/tcp
命令解释
8080/tcp:指定要查找的端口号和协议(这里是 TCP)。
输出示例
8080/tcp: 1234
输出结果显示,端口 8080 被进程 ID 为 1234 的进程占用。
在容器内部访问应用地址
在外部可能因为网关转发等原因无法访问,在内部访问看看进程是否能正常响应
GET 请求
curl http://example.com
POST 请求
curl -X POST -d "key1=value1&key2=value2" http://example.com/api
设置请求头
curl -H "Content-Type: application/json" -X POST -d '{"key": "value"}' http://example.com/api
看看端口进程是什么进程? lsof
没有应用异常,存活探针健康检查失败
现象:没有抛出应用异常,但是启动失败。
云平台事件显示
存活探针健康检查失败:Liveness probe failed: HTTP probe failed with statuscode: 404,可开启调试模式后登陆容器排查。
可能原因
- Debug的时候修改应用的port(如8081),误提交,导致探针使用默认端口无法探活
- Debug的时候,修改默认的context path并误提交。导致探针请求失败

浙公网安备 33010602011771号