一起买买买网站建设,wordpress 图片主页,滕州网站建设网站行吗,wordpress trac1、Java 服务常见问题
Java 服务的线上问题从系统表象来看大致可分成两大类: 系统环境异常、业务服务异常。
系统环境异常#xff1a;主要从CPU、内存、磁盘、网络四个方面考虑。比如#xff1a;CPU 占用率过高、CPU 上下文切换频率次数较高、系统可用内存长期处于较低值、…1、Java 服务常见问题
Java 服务的线上问题从系统表象来看大致可分成两大类: 系统环境异常、业务服务异常。
系统环境异常主要从CPU、内存、磁盘、网络四个方面考虑。比如CPU 占用率过高、CPU 上下文切换频率次数较高、系统可用内存长期处于较低值、磁盘满了、磁盘 I/O 过于频繁、网络流量异常等等。业务服务异常主要是业务服务自身运行出现异常。比如服务发生内存泄漏导致频繁进行 Full GC、 PV 量过高导致服务崩溃、服务调用耗时异常、线程死锁、多线程并发问题等等。
2、如何定位问题
2.1 Linux 系统的性能分析
1CPU 性能分析使用 top 命令能够实时显示系统中各个进程的资源占用状况。 相关参数说明
PID : 进程id
USER : 进程所有者
PR : 进程优先级
NI : nice值。负值表示高优先级正值表示低优先级
VIRT : 进程使用的虚拟内存总量单位 kb。VIRTSWAPRES
RES : 进程使用的、未被换出的物理内存大小单位 kb。RESCODEDATA
SHR : 共享内存大小单位 kb
S : 进程状态。D不可中断的睡眠状态R运行S睡眠T跟踪 / 停止Z僵尸进程
%CPU : 上次更新到现在的 CPU 时间占用百分比
%MEM : 进程使用的物理内存百分比
TIME : 进程使用的 CPU 时间总计单位 1/100 秒
COMMAND : 进程名称2内存使用情况分析使用 free命令来显示的当前内存的使用情况。 相关参数说明
total内存总数
used已经使用的内存数
free空闲的内存数
shared当前已经废弃不用, 总是 0
buff/cache缓存内存数
available可用的内存数3磁盘使用情况分析使用 df 或者 du 命令查看磁盘使用情况。 相关参数说明
Filesystem文件系统位于哪个分区
1K-blocks文件系统的总大小默认以 KB 为单位
Used用掉的硬盘空间大小
Available剩余的硬盘空间大小
Use%硬盘空间使用率
Mounted on文件系统的挂载点也就是硬盘挂载的目录位置4网络连接状态分析使用 netstat 命令查看系统中网络连接状态信息。 常用参数 -a显示本机所有连接和监听的端口 -n不解析域名 -t显示tcp协议连接 -u显示udp协议连接 -p显示连接对应的PID与程序名 相关参数说明
Proto连接协议的种类
Recv-Q接收到字节数
Send-Q从本服务器发出去的字节数
Local Address本地的IP地址可以是IP也可以是主机名
Foreign Address远程主机的IP 地址
State网络连接状态
PID/Program name进程id以及进程名称网络连接状态各值的含义
CLOSED关闭指网络连接尚未建立也没有终止。
LISTEN监听指服务器在等待客户端发起连接请求。
ESTABLISHED表示连接已经建立数据可以通过该连接传输。
CLOSE_WAIT表示连接已关闭但是连接方还没有释放资源需要等待连接方释放资源后才会进入CLOSED状态。
TIME_WAIT表示连接在建立之后发送端发送数据包后等待接收端响应的时间。如果接收端没有响应发送端会进入TIME_WAIT状态等待一段时间后才会进入CLOSED状态。
DESTROY表示连接已经被销毁无法进行任何数据传输。5vmstat是 Virtual Meomory Statistics虚拟内存统计的缩写 , 是实时系统监控工具。 参数详解 vmstat 后面第一个参数是采样的时间间隔数单位是秒第二个参数是采样的次数。
-- procs
r表示处于运行队列中正在运行或等待运行的进程数。
b表示处于不可中断睡眠状态的进程数。
-- memory
swpd表示被换出到交换空间的内存大小单位KB。
free表示空闲内存大小单位KB。
buff表示用作缓冲区的内存大小单位KB。
cache表示用作缓存的内存大小单位KB。
-- swap
si表示每秒从磁盘读入交换区的数据量单位KB。
so表示每秒写入到磁盘的交换区数据量单位KB。
-- I/O
bi表示每秒从块设备读入的数据量单位块一般为 512 字节。
bo表示每秒向块设备写入的数据量单位块一般为 512 字节。
-- system
in表示每秒产生的中断数。
cs表示每秒上下文切换的次数。
-- CPU
us表示用户空间占用 CPU 时间的百分比。
sy表示内核空间占用 CPU 时间的百分比。
id表示空闲 CPU 时间的百分比。
wa表示等待 I/O 的 CPU 时间百分比。
st表示被虚拟机偷走的 CPU 时间的百分比。2.2 JVM 性能分析
1jps查询当前机器所有 JAVA 进程信息
jps [ options ] [ hostid ]
options是命令行参数hostid指特定主机可以是ip地址、域名, 也可以指定具体协议和端口
options参数说明
-q只输出PID。
-m输出传递给 main 方法的参数。对于嵌入式 JVM输出可能为空。
-l输出应用程序主类的完整包名或应用程序 JAR 文件的完整路径名。
-v输出传递给 JVM 的参数。2jmap输出某个 java 进程内存情况
jmap [options] pid
options参数说明
-heap查看Java堆的详细信息包括堆的总大小、已用大小、空闲大小、对象数量等。
-histo查看Java堆中各个类的实例数量、内存占用大小等信息可用于查找内存泄漏等问题。
-permstat查看永久代内存的使用情况。
-F无法连接Java进程时强制执行但可能会导致进程暂停。3jstack打印某个 Java 线程的线程栈信息
jstack [ options ] pid
options参数说明
-F没有响应时强制打印一个堆栈转储
-l打印关于锁的其他信息比如拥有的java.util.concurrent ownable同步器的列表
-m打印包含Java和本机C/ C帧的混合模式堆栈跟踪
-h打印帮助信息4jstat查看堆内存各部分的使用量以及加载类的数量
jstat [option vmid [interval[s|ms] [count]] ]
参数说明
option需要监控的数据类型。如-gc表示监控垃圾收集相关的统计信息-gccapacity监控各个区域的大小。
vmidJava虚拟机的标识符通常是进程ID。
interval采样间隔单位可以是秒s或毫秒ms。
count采样次数。5jinfo用于查看 jvm 的配置参数
jinfo [option] pid
参数说明
-flags显示全部的配置参数
-flag name输出对应名称的参数
-flag [|-]name开启或者关闭对应名称的参数
-sysprops输出系统属性3、日志分析
3.1、GC 日志分析
GC 日志是用于定位问题重要的日志信息在 java 应用的启动参数中增加-XX:PrintGCDetails可以输出 GC 的详细日志根据GC日志可以看出jvm垃圾回收的相关信息。无论是 minor GC 或者是 Full GC我们主要关注 GC 回收的耗时以及频率。
3.2、业务日志分析
可以根据系统出错的大概时间找到服务器上该时间段的日志再根据日志去分析具体出错的位置。业务日志除了关注系统异常与业务异常之外还要关注服务执行耗时情况耗时过长的服务调用如果没有熔断等机制很容易导致应用性能下降或服务不可用。