CentOS网络故障排查秘笈:实战指南

news2024/10/23 12:26:55

前言

作为一名热爱折腾 Linux 的技术达人,我深知网络故障会让人抓狂!在这篇文章里,我和你分享了我的心得体会,从如何分析问题、识别瓶颈,到利用各种神器解决网络难题。不管你是新手小白还是老鸟大神,这里都有适合你的解决方案。赶紧看一看吧,让网络故障成为你的过去式!

我平时使用CentOS系统比较多,所以我在写这篇文章的时候所使用的操作系统是CentOS7,如果你使用的是Ubuntu,也没有关系,排除网络故障的过程是一样的,不同的是可能使用命令工具、配置文件会有所不同,希望我的分享给能你带来一些帮助。

网络故障的常见原因

导致网络发生故障的原因有很多,但是常见的却不多,如果你的系统发生网络故障,可以先从下面这些方面开始检查,这些是一此常见的原因:

  • 网络接口配置错误:
    • IP 地址、子网掩码、网关配置错误。
    • DNS 配置错误或 DNS 服务器不可达。
  • 网络硬件故障:
    • 网络线缆连接不良或损坏。
    • 网络接口卡硬件故障。
  • 网络交换机或路由器故障。
    • 防火墙配置错误:
    • 防火墙规则设置错误,导致阻止了必要的网络流量。
    • 防火墙服务未启动或异常。
  • 服务未启动或配置错误:
    • 网络服务(如网络管理器、网络接口服务等)未启动。
    • 服务配置文件错误导致服务无法正常工作。
  • 路由配置错误:
    • 路由表配置错误。
    • 网关配置错误或不可达。
  • DNS 解析问题:
    • DNS 解析配置错误。
    • DNS 服务器不可达或不可用。
  • 网络流量拥塞:
    • 网络带宽使用过大导致网络拥堵。
    • 网络设备过载导致网络性能下降。
  • 安全策略限制:
    • SELinux 或其他安全策略阻止了必要的网络访问。
    • 安全软件或防病毒软件过滤了网络流量。

排除网络故障的基本流程

有问题一点不可怕,可怕是手心脚乱地瞎搞,没有解决问题反而产生更大的问题,所以遇到问题不要慌!先想想处理这个问题的基本流程是什么。在CentOS中,排除网络故障可以遵循以下的基本流程:

  1. 检查网络连接:首先,检查网络连接是否正常。可以使用ping命令测试与远程主机之间的连通性,如果无法ping通目标主机,则可能存在网络故障。
  2. 检查IP地址和网关设置:确认本地主机的IP地址和网关设置是否正确。可以使用ifconfig或ip命令检查当前网络接口的配置,并确认其IP地址和网关是否正确。
  3. 检查DNS解析:如果网络故障是由于DNS解析问题导致的,则需要使用nslookup或dig命令查询域名的IP地址,以确认DNS解析是否正常。
  4. 检查防火墙设置:如果网络故障是由于防火墙设置导致的,则需要使用iptables命令查看防火墙规则是否正确配置。如果需要更新规则,则需要使用iptables命令进行添加或删除规则。
  5. 检查网络服务:确认网络服务是否正常运行。可以使用systemctl命令检查网络服务的状态,如果网络服务未启动,则需要使用systemctl命令启动它。
  6. 检查网络设备:如果所有上述步骤都无法解决问题,那么可能是网络设备(如路由器、交换机等)或网络线路出现了问题。可以考虑更换网络线路或联系网络设备供应商进行进一步检查。

基本流程是清楚的,但是具体要怎么做呢?那就先从一些常见的检查项开始,一步一步来,不要急。当然,如果你已经明确知道问题出在了哪里,那另当别论。下面是一些排除网络故障时的常见检查项:

常见检查项

验证网络物理连接

这个就相对简单一些,检查一下网线是否插好、接插入的接口是否正确以及相关的网络设备,如交换机、路由器的指示灯状态是否正常。

检查网络连接状态

检查网络连接状态有很多方法,这里分享比较常用的几种:

  • 使用ping命令
  • 使用curl命令
  • 使用 ip link 命令

使用ping命令

使用 ping 命令可以测试与指定主机之间的连通性。例如,要检查与 baidu 的连接状态,可以执行以下命令:

ping -c 4 baidu.com

这将向 baidu 发送 4 个 ICMP 回显请求,并显示每个请求的响应时间和状态。

使用curl命令

使用curl -I 命令可以向https://www.baidu.com 发送 HTTP HEAD 请求,并显示服务器返回的 HTTP 头信息,而不会下载文件内容。HTTP 响应头信息非常有用,包含有 HTTP 状态码、服务器类型、响应头等可以判断网络响应情况的重要字段。

curl -I https://www.baidu.com

使用 ip link

使用 ip link 命令可以查看系统中所有网络接口的状态:

ip link

确保所有网络接口都处于 UP(已启用)状态。

上述输出了两个网络接口的信息,一个是本地回环接口 lo,另一个是物理网络接口 ens33。

  • lo(本地回环接口):
    • lo:接口名称为 lo。
    • :表示该接口为回环接口,已启用,链路已启用。
    • mtu 65536:指定最大传输单元为 65536 字节。
    • qdisc noqueue:指定不使用队列调度器。
    • state UNKNOWN:接口状态未知。
    • mode DEFAULT:接口模式为默认模式。
    • group default:接口所属的默认分组。
    • qlen 1000:指定队列长度为 1000。
  • ens33(物理网络接口):
    • ens33:接口名称为 ens33。
    • :表示该接口支持广播和多播,已启用,链路已启用。
    • mtu 1500:指定最大传输单元为 1500 字节。
    • qdisc pfifo_fast:指定使用 pfifo_fast 队列调度器。
    • state UP:接口状态为已启用。
    • mode DEFAULT:接口模式为默认模式。
    • group default:接口所属的默认分组。
    • qlen 1000:指定队列长度为 1000。
    • link/ether 00:50:56:3e:26:4c:指定 MAC 地址为 00:50:56:3e:26:4c。
    • brd ff:ff:ff:ff:ff:ff:指定广播地址为 ff:ff:ff:ff:ff:ff。

检查网络接口配置

查看ifcfg-ens33

我的网络接口的名称是ens33,这个网络接口的配置文件在/etc/sysconfig/network-scripts/ifcfg-ens33,可以执行下面的命令,打开网络接口配置文件,检查IP 地址和子网掩码的配置:

ip link

我的ifcfg-ens33配置内容如下(这里我的CentOS系统使用的是静态IP):

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="cd43292c-4ccc-45df-a7ea-e8cc847143c8"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.253.166
NETMASK=255.255.255.0
GATEWAY=192.168.253.2
DNS1=114.114.114.114
DNS2=114.114.115.115

如果想使用动态IP,可以这样配置

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="DHCP"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="cd43292c-4ccc-45df-a7ea-e8cc847143c8"
DEVICE="ens33"
ONBOOT="yes"
  • TYPE="Ethernet":指定网络接口类型为以太网。
  • PROXY_METHOD="none":指定代理方式为无代理。
  • BROWSER_ONLY="no":指定不仅限于浏览器使用。
  • BOOTPROTO="static":指定使用静态 IP 地址配置方式,如果是动态IP,则应该配置dhcp。
  • DEFROUTE="yes":指定该接口作为默认路由。
  • IPV4_FAILURE_FATAL="no":指定 IPv4 连接失败不是致命错误。
  • IPV6INIT="yes":启用 IPv6 协议栈。
  • IPV6_AUTOCONF="yes":启用 IPv6 自动配置。
  • IPV6_DEFROUTE="yes":指定该接口作为 IPv6 默认路由。
  • IPV6_FAILURE_FATAL="no":指定 IPv6 连接失败不是致命错误。
  • IPV6_ADDR_GEN_MODE="stable-privacy":指定 IPv6 地址生成模式为稳定性隐私地址。
  • NAME="ens33":指定接口名称为 ens33。
  • UUID="cd43292c-4ccc-45df-a7ea-e8cc847143c8":指定接口的 UUID。
  • DEVICE="ens33":指定设备名称为 ens33。
  • ONBOOT="yes":指定系统启动时自动激活该网络接口。
  • IPADDR=192.168.253.166:指定接口的 IPv4 地址为 192.168.253.166。
  • NETMASK=255.255.255.0:指定接口的子网掩码为 255.255.255.0。
  • GATEWAY=192.168.253.2:指定接口的默认网关为 192.168.253.2。
  • DNS1=114.114.114.114:指定第一个 DNS 服务器地址为 114.114.114.114。
  • DNS2=114.114.115.115:指定第二个 DNS 服务器地址为 114.114.115.115。

此项检查的目的是,确保网络接口的 IP 地址和子网掩码配置正确。其中IP 地址应该属于正确的网络地址范围,并且子网掩码应该与网络配置一致。

使用 ip addr

使用 ip addr 命令可以查看系统中所有网络接口的配置信息,包括 IP 地址、子网掩码、MAC 地址等:

ip addr

这将列出系统中所有网络接口的配置信息。

这些信息描述了系统中两个网络接口的配置和状态。lo 接口是本地回环接口,用于本地通信,而 ens33 接口是物理网络接口,连接到网络中。

  • lo(本地回环接口):
    • 接口名称:lo
    • 类型:LOOPBACK(本地回环)
    • 状态:UP(已启用),LOWER_UP(链路已启用)
    • MTU(最大传输单元):65536
    • 排队调度器:noqueue
    • 状态:UNKNOWN(未知状态)
    • 地址:127.0.0.1/8(IPv4 地址),::1/128(IPv6 地址)
    • IPv4 地址的范围:scope host
    • IPv6 地址的范围:scope host
  • ens33(物理网络接口):
    • 接口名称:ens33
    • 类型:BROADCAST(广播),MULTICAST(多播)
    • 状态:UP(已启用),LOWER_UP(链路已启用)
    • MTU(最大传输单元):1500
    • 排队调度器:pfifo_fast
    • 状态:UP(已启用)
    • MAC 地址(链路层地址):00:50:56:3e:26:4c
    • IPv4 地址:192.168.253.166/24
    • 广播地址:192.168.253.255
    • IPv6 地址:fe80::6263:60fe:5bad:b36c/64
    • 链路本地 IPv6 地址

此项检查的目的是,验证网络配置参数信息是否能正常查询到。

使用ifconfig

使用ifconfig命令可以查看当前网络接口的配置:

ifconfig

解读上述内容:

  • ens33和lo:这是两个不同的网络接口,ens33是以太网接口,而lo是本地环回接口。
  • flags=4163:这些是标志位(flags),表示网络接口的状态和属性。在这里,“UP”表示接口已经启用,“BROADCAST”表示支持广播,“RUNNING”表示接口正在运行,“MULTICAST”表示支持多播。
  • mtu 1500:这是接口的最大传输单元(Maximum Transmission Unit),指定了可以在单个数据包中传输的最大字节数。
  • inet 192.168.253.166和inet 127.0.0.1:这是接口的IPv4地址,分别是ens33和lo接口的IPv4地址。
  • netmask 255.255.255.0和netmask 255.0.0.0:这是IPv4地址的子网掩码,用于指示网络地址和主机地址的分隔情况。
  • broadcast 192.168.253.255:这是广播地址,用于向特定网络中的所有设备发送消息。
  • inet6 fe80::6263:60fe:5bad:b36c和inet6 ::1:这是接口的IPv6地址,分别是ens33和lo接口的IPv6地址。
  • ether 00:50:56:3e:26:4c:这是以太网接口的物理地址(MAC地址)。
  • RX packets和TX packets:这是接收和发送的数据包数量。
  • RX errors和TX errors:这是接收和发送时发生的错误数量。
  • RX dropped和TX dropped:这是丢弃的接收和发送数据包数量。
  • RX overruns和TX overruns:这是接收和发送时发生的溢出错误数量。
  • RX frame和TX frame:这是接收和发送时发生的帧错误数量。

此项检查的目的是,验证网络配置参数信息是否能正常查询到。

检查DNS 解析

检查resolv.conf

检查 /etc/resolv.conf 文件的 DNS 配置

cat /etc/resolv.conf

这里的8.8.8.8是谷歌的公共DNS服务器。

检查DNS 服务器是否可达

可以使用 ping 命令向 DNS 服务器发送 4 个 ICMP 回显请求,会显示每个请求的响应时间和状态,根据响应结果可以确定系统是否能够与 DNS 服务器建立连接:

ping -c 4 8.8.8.8

解读上述内容:

  • PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.:表示执行PING命令,向IP地址为8.8.8.8的主机发送数据包,每个数据包大小为56字节(实际大小为84字节,包括头部信息)。
  • 64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=43.4 ms:表示从IP地址为8.8.8.8的主机收到一个大小为64字节的数据包,ICMP序列号为1,生存时间(TTL)为128,往返时间(RTT)为43.4毫秒。
  • --- 8.8.8.8 ping statistics ---:表示PING命令的统计信息开始。
  • 4 packets transmitted, 4 received, 0% packet loss, time 3004ms:表示共发送了4个数据包,全部都成功接收,没有丢失任何数据包,总共花费了3004毫秒。
  • rtt min/avg/max/mdev = 43.384/43.496/43.573/0.072 ms:表示往返时间的统计信息,包括最小往返时间、平均往返时间、最大往返时间和往返时间的标准偏差(mdev)分别为43.384毫秒、43.496毫秒、43.573毫秒和0.072毫秒。

此项检查的目的是,确保默认DNS解析正常,能够正常访问互联网。

检查网络路由

使用 ip route 命令可以查看系统的路由表,确认默认网关是否设置正确。执行以下命令:

ip route

第一条默认路由指定了默认网关的地址和出口接口,用于发送到其他网络的数据包;第二条子网路由则用于直接连接到 ens33 接口的本地子网内部通信。

  • default via 192.168.253.2 dev ens33 proto static metric 100:
    • default:这是默认路由条目,用于发送到除本地子网之外的所有目的地的数据包。
    • via 192.168.253.2:指定默认网关的 IP 地址为 192.168.253.2。
    • dev ens33:指定默认路由的出口网络接口为 ens33。
    • proto static:说明这是通过静态路由配置的默认路由。
    • metric 100:指定该路由的优先级为 100。如果有多个默认路由,优先级越低的会被优先使用。
  • 192.168.253.0/24 dev ens33 proto kernel scope link src 192.168.253.166 metric 100:
    • 192.168.253.0/24:这是一个子网路由条目,用于直接连接到 ens33 接口的子网。
    • dev ens33:指定该路由的出口网络接口为 ens33。
    • proto kernel:说明这是由内核自动生成的路由。
    • scope link:指定该路由的范围为链路本地,表示这是一个本地子网路由。
    • src 192.168.253.166:指定源 IP 地址为 192.168.253.166,这是本地子网的 IP 地址。
    • metric 100:指定该路由的优先级为 100。

此项检查的目的是,确保默认网关指向网络中的正确路由器或网关设备。

检查防火墙设置

检查防火墙状态

查看防火墙的当前状态,即是否正在运行。它将显示防火墙是否处于运行状态。

sudo firewall-cmd --state

检查允许通过防火墙的端口

  • 列出当前防火墙中允许通过的端口。它将显示防火墙配置中定义的所有端口及其状态。
sudo firewall-cmd --list-port

如果将要使用的端口未开放,可以使用下面的命令,开放相关端口:在这个例子中,将永久性地向防火墙规则中添加一个端口,端口号为 8080,并且添加到了 public 区域(即公共区域)。这意味着该端口会在防火墙重启后继续保持开放状态,而不会丢失。

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

如果需要开放端口马上生效,需要重新启动 firewalld 服务,即重新加载防火墙配置并重新启动防火墙。

sudo systemctl restart firewalld.service

当然如果你嫌麻烦的话,也可以先停止防火墙服务,然后再启动:

  • 停止 firewalld 服务,即关闭防火墙。它会立即停止防火墙,导致系统处于不受防火墙保护的状态。
sudo systemctl stop firewalld.service
  • 启动 firewalld 服务,即打开防火墙。它会立即启动防火墙服务,开始保护系统。
sudo systemctl start firewalld.service

我的建议是,你最好设置防火墙服务为开机启动,这样系统在下次重启时会自动启动防火墙:

sudo systemctl enable firewalld.service

这项检查是确保将要使用的端口对外已经开放,是可以连通的。

检查端口连通性

使用 telnet 命令可以测试指定端口是否能够建立连接。例如,如果要验证端口 8080 是否开放,可以执行以下命令:

telnet 192.168.253.166 3306

如果端口开放,将会显示连接成功的消息;如果端口关闭或被防火墙阻止,将会显示连接失败的消息。如图:3307端口是不通的,而3306端口是通的。

如果未安装telnet,可以使用下面命令进行安装与卸载

sudo yum install telnet

sudo yum remove telnet

这项检查是确保对外已经开放的端口,是可以连通的。

检查网络服务

systemctl:用于管理系统服务,包括网络服务。可以使用以下命令检查网络服务的状态:

systemctl status network

Active: active (exited):表示服务当前处于活动状态,但已经完成了其主要任务,并退出了,由此可见网络状态是正常的。

systemctl status NetworkManager

这项检查是确保系统的网络服务是处于正常工作状态。

写在最后

如果你觉得这篇文章对你有所帮助,不妨点击点赞按钮,让更多的人看到这篇优质的技术分享。同时,别忘了将这篇文章收藏起来,以备日后查阅。这样,你就能随时回顾和复习文章中的重要知识点,确保你的技术水平始终保持在最高水平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1498294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opengl 学习(二)-----你好,三角形

你好&#xff0c;三角形 分类demo效果解析 分类 opengl c demo #include "glad/glad.h" #include "glfw3.h" #include <iostream> #include <cmath> #include <vector>using namespace std;/** * 在学习此节之前&#xff0c;建议将这…

javascript操作BOM的方法

目录 1.window.alert() 2.window.confirm() 3.window.prompt() 4.window.location() 5.window.navigator() 6.window.screen() 7.window.history() 8.window.setTimeout() 和 window.clearTimeout() 9.window.setInterval() 和 window.clearInterval() BOM&#xff08…

基类指针指向派生类对象,基类不带虚函数,子类带虚函数产生的异常分析

基类指针指向派生类对象&#xff0c;基类不带虚函数&#xff0c;子类带虚函数产生的异常分析 基类指针指向派生类对象&#xff0c;指针的起始地址一定是指向基类起始地址的 这种情况下&#xff0c;当基类没有虚函数&#xff0c;而子类存在虚函数时&#xff0c;就会出现问题&am…

宠物空气净化器值得不值得买?各品牌宠物空气净化器怎么选?

随着越来越多的家庭选择养宠物&#xff0c;我们也面临着宠物环境卫生和家庭生活舒适度的问题。根据一项调查显示&#xff0c;有70%的养猫家庭中的铲屎官曾经遭受过猫藓或猫毛过敏、鼻炎等问题的困扰。尤其是对于家中有老人、小孩和孕妇等免疫力较低的人来说&#xff0c;他们的抵…

Web自动化测试—webdriver的环境配置

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

计算机基础专升本笔记十四-计算机网络基础(一)

计算机基础专升本笔记十四-计算机网络基础&#xff08;一&#xff09; 一、计算机网络的发展历程 第一代计算机网络&#xff08;数据通信&#xff09; 以数据通信为主的第一代计算机网络。主要是指美国军方用于防控系统的一种联机系统。它只是计算机网络的雏形。 第二代计算…

代码随想录算法训练营第三十九天|动态规划|62.不同路径、63. 不同路径 II

62.不同路径 文章 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

用户角色的重要性:确保财务数据安全的最佳方式

在企业的财务管理业务中&#xff0c;一个人几乎不可能完成所有的财务记账任务&#xff0c;例如设定预算、发票审批等等&#xff0c;至少不能有效地执行。最为明智的方式&#xff0c;是将这些任务分派给特定的人员&#xff0c;比如部门经理、财务经理或者销售、市场人员等等。 但…

后量子时代,未来密码该何去何从?

古有飞鸽&#xff0c;现有网络&#xff0c;在知识经济为基础的信息化社会中&#xff0c;保障网络信息安全无疑成为成为国与国之间无形的较量。小到个人通讯&#xff0c;大到机要信息传输&#xff0c;信息安全对于国家安全和经济活动正常运转至关重要。密码学作为保障网络与信息…

47、WEB攻防——通用漏洞Java反序列化EXP生成数据提取组件安全

文章目录 序列化和反序列化的概念&#xff1a; 序列化&#xff1a;把java对象转换成字节流的过程&#xff1b;反序列化&#xff1a;把字节流恢复为java对象的过程。 对象的序列化主要有两种用途&#xff1a; 把对象的字节流永久的保存在硬盘上&#xff0c;通常存放在一个文件…

2024年最新整理腾讯云学生服务器价格、续费和购买流程

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

3.5日常学习

matlab处理数据 自己写了关于detect_data的函数&#xff0c;让它帮我改了&#xff0c;哈哈哈 %改正前function data_chuli(path1,savepath)[num]xlsread(path1,1,B18:F23);a num;ba;cb(:);xlswrite(savepath,c) end%改正后function data_chuli(path1, savepath)num xlsread…

腾讯云学生服务器申请入口、续费优惠价格和常见问题解答

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

Web自动化测试--selenium

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

C++数据结构与算法——二叉搜索树的修改与构造

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

JVM3_数据库连接池虚引用ConnectionFinalizerPhantomReference引起的FullGC问题排查

背景 XOP服务运行期间&#xff0c;查看Grafana面板&#xff0c;发现堆内存周期性堆积&#xff0c;Full GC时间略长&#xff0c;需要调查下原因 目录 垃圾收集器概述 常见的垃圾收集器分区收集策略为什么CMS没成为默认收集器 查看JVM运行时环境分析快照 PhantomReference虚引用…

DAWG库下载出现的问题

今天配置一些环境出现了报错需要下载DAWG-0.8.0-cp38-cp38-win_amd64&#xff0c; PyPi官网https://pypi.org/project/DAWG/#files 只找到了mac版本&#xff0c;没发现windows版本 于是找到了非官方网址&#xff1a; https://www.lfd.uci.edu/~gohlke/pythonlibs/#dawg 下载DA…

JAVA开发第一个Springboot WebApi项目

一、创建项目 1、用IDEA新建一个SpringBoot项目 注意JDK与Java版本的匹配,如果想选择jdk低版本,先要更改服务器URL:start.aliyun.com 2、添加依赖 (1)、Lombok (2)、Spring Web (3)、Mybatis Framework (4)、MySqlDriver 项目中的配置 pom.xml 如下 <?…

java写DBF文件

之前漏了个功能支持&#xff0c;那就是WhoNet上报的DBF文件导出&#xff0c;因为DBF基本没什么人在用了&#xff0c;实现DbfUtil供业务写DBF文件做WhoNet上报导出用。 DBF读写工具类 package JRT.Core.Util;import com.linuxense.javadbf.DBFDataType; import com.linuxense.…

java017 - Java抽象类

1、概述 一般情况&#xff0c;动物是抽象的&#xff0c;所以不能被new,比如你在Animal类中定义一个成员方法eat,你不能定义具体内容&#xff0c;比如吃鱼或者吃白菜&#xff0c;因为动物是抽象的。 一个没有方法体的方法&#xff0c;应该定义为抽象方法&#xff0c;而类中如果…