服务无法启动

诊断思路

网站地址无法访问,访问后台没有日志

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,可开启调试模式后登陆容器排查。

可能原因

  1. Debug的时候修改应用的port(如8081),误提交,导致探针使用默认端口无法探活
  2. Debug的时候,修改默认的context path并误提交。导致探针请求失败

参考资料

posted @   向着朝阳  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示