Linux基本操作以及Jvm问题排查
Xshell简介
-
Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows 平台的TELNET 协议。Xshell通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
-
Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。除此之外,其还有丰富的外观配色方案以及样式选择。
Xshell的下载与安装
- Xshell 下载地址
- 点击下载后选择试用版本,输入邮箱等信息后点击开始试用
- 检查输入的邮箱,会收到一个下载链接,通过下载链接可以下载安装包
使用Xshell远程连接Linux
- 运行Xshell来到操作界面,在左上角的文件中选择新建
- 在新建连接页面输入名称和主机地址,选择SSH协议,SSH端口是22,所以不需要修改端口
- 接着点击用户身份验证,选择Password方式连接,输入用户名和密码后点击连接
- 连接成功后进入如下操作页面
Linux的系统状态检查
查看系统的负载
- 使用的命令:
top
- 命令结果如下:
关键指标说明: - 第一行数据中,users是指当前在线的用户数,load average有三个指标,分别表示1分钟、5分钟和15分钟内系统的负载值,值越大负载压力越大。一般如果系统是N核的,负载均值小于N则认为没有负载压力。
- 第二行数据中,显示了当前系统中任务的执行情况。
- 第三行数据中,展示了CPU的工作情况,表示CPU在几种工作状态下的时间占比。例如wa的值表示CPU等待I/O的时间百分比。
- 第四行数据中,显示了当前物理内存的占用情况。
- 第五行数据是与缓存相关的交换空间状态。
- 第六行往后是系统中各个进程的状态,按照资源占用的多少,从高往低排序。
查看网络连接状态
- 相关工具
netstat
- 命令使用示例:
netstat -ano
- 结果分析:
使用netstat -ano
可以得到当前系统的网络连接情况,包括各个端口的占用状态以及监听的地址范围,还有当前与该端口建立连接进行通信的ip地址和端口。
如果发现异常的连接,在Linux中可以通过端口来定位到该进程,如下所示定位8080端口
[root@definesys ~]# netstat -nlp | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1768/java
Linux中的Jvm问题排查
查看Java进程数量
- 查看所有Java进程命令:
ps -ef | grep java
- 也可以通过命令 :
pstree -p |grep java
查看Java进程和线程
查看Java进程gc情况
- 相关工具
jstat
- 命令使用示例
jstat -gcutil 1768 2000 2000
该命令的后面三个参数分别表示 进程号 打印时间间隔 打印的行数
命令的结果分析如下:
其中关键的指标为 YGC 和 FGC ,YGC表示年轻一代GC事件的数量,而FGC表示老年代垃圾回收次数,YGCT 和 FGCT表示回收耗费的时间。当FGC的次数较大时,则说明程序运行出现了严重的问题。
查看Java内存类实例
- 相关工具:
jmap
- 使用示例:
jmap -histo 1768 | head -20
- 结果分析如下:
该命令打印出前20行的结果,结果中展示了指定的Java进程中,各个类的实例化数量。在进行内存排查时,如果出现自己定义的某个类实例化数量很多,则可能出现一些内存问题,需要注意。
如何使用curl命令
- 使用场景:调试分析某个url请求的内容和返回结果
- curl命令示例:
curl http://www.baidu.com
通过curl发送请求获取返回结果,如下图所示:
- curl的获得:可以通过抓包来直接获取对应curl命令,例如使用谷歌浏览器的调试工具,可以找到需要的请求,直接选择Cpoy as cURL即可获得该请求的curl请求命令。
- curl的使用:可以在终端直接执行crul链接,可以通过一些参数设置返回的结果,也可以将curl链接导入到调试工具当中,例如postman,如下图所示,可以通过Code编辑crul链接进行导入。