服务无法启动
目录
诊断思路
网站地址无法访问,访问后台没有日志
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并误提交。导致探针请求失败
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库