`
iamzhongyong
  • 浏览: 806815 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【原】java问题排查常用linux命令

 
阅读更多

     最近部门的测试环境总是半夜挂掉,有感于线上问题排查的种种困惑,所以打算彻底扫盲一下问题排查的一些关键命令,在真正火灾来临的时候,能够迅速的定位问题。

    重用的linux命令总体分为几个大类,以前自己觉得,这些命令,在用的时候现查就行,但是经历了几次事情之后,我觉得对于这些工具在问题真正来临的会后需要灵活运用,灵活运用需要平时对这些就很熟悉,自己很多没有熟悉,所系需要恶补一下,在问题真正来临的时候,自己能够冷静准确的处理问题。

 

(1)ping :

功能是检测主机,执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。 

 

(2)  netstat:
显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
·netstat –s
本选项能够按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。
·netstat –e
本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。

·netstat –a
本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请(LISTENING)的那些连接。
·netstat –n
显示所有已建立的有效连接。

 

(3)hostname
显示或设置系统的主机名;如果无任何选项和主机名,则用于显示系统的主机名。

在看这个命令的时候想起了windows中修改host文件来进行测试,这里顺便了解了一下host文件的作用。

Hosts文件是一个纯文本的文件,用普通的文本编辑软件如记事本等都能打开。


Hosts文件的格式:
这个文件包含IP地址到HOST name(主机名)的映射关系.每一条独自占有一行.
IP地址应该放在第一位,后面应该紧跟着Host name. IP地址与Host name之间应该被最少一个空格隔开.对于每行的映射说明,用“#”分割后用文字说明。
Hosts文件在Windows中的用途:
访问某个网站通常是根据域名访问,比如:http://www.9usb.net.我们在浏览器中输入以上域名后,后台就首先通过DNS服务器把网络域名www.9usb.net解析成173.XXX.XXX.XXX的IP地址后,我们的计算机才能访问。要是对于每个域名请求我们都要等待域名服务器解析后返回IP信息,这样访问网络的效率就会降低。
Hosts文件起作用的地方就是在由域名转换成IP的过程中。hosts文件在本地保存了一个域名和IP地址的映射,能提高解析效率。Windows系统在进行DNS请求以前,Windows系统会先检查Hosts文件中是否有这个地址映射关系,如果有则调用这个IP地址映射,如果没有再向已知的DNS服务器提出域名解析。
Hosts的请求级别比DNS高。


Host文件在具体使用中的作用
1.绕开DNS请求,节省域名解析时间
对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,这样当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。在本地进行域名解析比请求DNS服务器进行转换要省时间,这大大加快了访问速度。
2.方便局域网用户
通常局域网一般不会架设DNS服务器,访问某些服务要输入难记的IP地址,这就比较不方便。现在可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候我们输入这个服务器的名字就OK了。
3、屏蔽网站和解屏蔽网站
4.顺利连接系统

 

(4)uptime

linux系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息。
uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
uptime命令用法十分简单:直接输入uptime即可.

例如: 17:07:22 up 79 days, 17:57,  1 user,  load average: 0.08, 0.08, 0.02

 

(5)TOP

 

TOP显示的内容详解

 

在TOP命令运行的过程中,点击下面的键,可以进行进一步的显示。

 

(1)u:指定显示用户进程。

(2)1 :显示每个CPU的统计信息。

(3)P:按%CPU使用率排行。shift+p。

(4)M:按%MEM排行。shift+m。

(5)<Space>:立即刷新。

(6)-H : 显示线程。当这个设定开启时,将显示所有进程产生的线程。

(7)-p : 监控指定的进程。当监控多个进程时,进程ID以逗号分隔。这个选项只能在命令行下使用。

 

 

 

 

---------------------------------------------------------------------------------------

 

  • 查看java进程中各个线程占用CPU以及内存情况

top -H -p `pgrep java -u admin`

  • 加入看到8440这个线程有异常,进制转换

printf '0x%x\n' 8440

  • 看这个线程在做什么事情

sudo -u admin /opt/taobao/java/bin/jstack `pgrep java -u admin` | grep -C 20 0x20f8 –color

 

---------------------------------------------------------------------------------------

 

 

 

(6)sar

sar 的主要作用:

主要负责收集、汇报与存储系统运行信息的。有两个参数非常非常常用,就是“时间间隔”和“输出次数”。默认输出CPU的信息,但是内存、Load、IO的情况都可以查看

1、把sar输出的信息保存到文件中,只要  -o filename即可,不过在看次文件的时候,需要sar  -f  filename   否则通过cat看到的是乱码

2、CPU是多核的情况下,查看每一下的情况已经统计情况,

    sar -P ALL   显示每一核的情况已经总体情况

    sar -P 数字  显示特定CPU的情况

 

   

3、查看历史的sar的情况

     sar   -u(r/q/) -f    /var/log/sa/sa01    最后一个为具体的日志(sa+日期中的天数)

4、sar -q  查看load的情况

 

    

5、sar -r  查看内存

 

 

6、sar -n  查看网络情况

 

 

 

 

 

 

(7)vmstat

 

 

(8)ps

 

 

(9)grep/egrep/fgrep

 

 

(10)awk

 

(11)kill

 

 

(12)mapstat

 

 

(13)iostat

 

(14)df/du

 

(15)

 

系统配置相关:

查看内核/操作系统/CPU信息: uname -a

查看操作系统版本: head -1 /etc/issue

查看网卡信息:cat  /sbin/ifconfig

查看cpu配置: cat /proc/cpuinfo

查看mem配置:cat /proc/meminfo

查看环境变量 资源: env 

查看各分区使用情况:  df -h

查看指定目录的大小: du -sh

查看系统负载 磁盘和分区: cat /proc/loadavg 

查看挂接的分区状态:  mount | column -t 

查看hosts配置:cat
 /etc/hosts

查看所有网络接口的属性: ifconfig 

查看路由表: route -n

查看tcp协议配置(ipv4):  /proc/sys/net/ipv4


性能分析相关工具:

ps,pstree: 命令是系统分析最常用的基本命令,ps命令提供了一个正在运行的进程的列表,列出进程的数量取决于命令所附加的参数。

uptime: 查看系统运行时间、用户数、负载

top :实时显示cpu负载、进程资源占用

vmstat:整体性能监控,cpu,mem,页面io等。

free: free命令显示系统的所有内存的使用情况,包括空闲内存、被使用的内存和交换内存空间。Free命令显示也包括一些内核使用的缓存和缓冲区的信息。
-m  以M形式展示数据
-g 以G形式展示数据


pmap: pmap命令显示一个或者多个进程使用内存的数量,你可以用这个工具来确定服务器上哪个进程占用了过多的内存从而导致内存瓶颈。

iostat:iostat是sysstat包的一部分。Iostat显示自系统启动后的平均CPU时间(与uptime类似),它也可以显示磁盘子系统的使用情况,iostat可以用来监测CPU利用率和磁盘利用率。

sar: sar也是sysstat安装包的一部分。sar命令用于收集、报告和保存系统的信息。

mpstat: mpstat命令也是sysstat包的一部分。Mpstat命令用于监测一个多CPU系统中每个可用CPU的情况。Mpstat命令可以显示每个CPU或者所有CPU的运行情况

ulimit: 可以通过ulimit来控制系统资源的使用。


java应用性能分析:

jmap(配合jhat分析heapdump)、jstat、jconsole、jvisualvm、jprofiler、visualGC等等多种多样。



查看进程和端口号相关netstat:

Netstat 用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
通过netstat可以查看网络连接、端口号等占用情况

查看TCP/UDP端口:netstat -tuoln

查看进程名运行的端口号:netstat -anp|grep 进程名
当需要监控某个服务的端口号时可以首先获取该服务的监听端口号,如tomact进程
netstat -anp|grep tomcat

 根据端口查看运行的进程:
netstat -anp|grep 端口号  或  lsof -i:端口号
通常用于查看某个端口号下建立的连接数,如8083端口号下的连接数统计:
netstat -anp|grep:8083|wc -l 

netstat -tln 查看服务监听端口

查看进程   ps aux

查看指定服务的进程号,如tomcat服务: ps aux|grep tomcat

结束进程   kill -15 pid 立即释放资源; kill -9 pid 不会立即释放资源 

查看特定文件中特定文本的个数
egrep -o "[A-Z|a-z]\w*""Exception" map.log | sort | uniq -c | sort –nr   


最后制定定时执行任务,合理利用空闲时间:

crontab -e: 设置计划任务;

 

分享到:
评论

相关推荐

    java内存泄露、溢出检查方法和工具

    1. **生成堆转储文件**:在Linux环境中,可以使用JVM提供的`jmap`命令生成堆转储文件。例如,如果Java进程的PID为12345,可以执行`jmap -dump:format=b,file=heapdump.hprof 12345`,这会在当前目录下创建一个名为`...

    java需要掌握的linux命令.pdf

    在IT行业中,尤其是对于Java开发者来说,熟悉Linux操作系统是必不...掌握这些基础技能后,Java开发者可以在Linux环境中更高效地工作,进行服务器维护、应用部署和故障排查。这将极大地提升工作效率并增强问题解决能力。

    应届生java开发工程师面试linux主要命令

    以下是一些关键的Linux命令,这些都是应届生在面试中可能需要了解和熟练使用的。 1. **ls** - 列出目录内容:`ls`命令用于查看当前目录下的文件和子目录。加上 `-l` 参数可以显示详细信息,包括权限、大小、创建...

    java应用程序远程登录linux并执行其命令

    7. **监控与日志**:为确保远程操作的可靠性,建议记录执行的命令及返回结果,以便于后期的监控和问题排查。 通过上述方式,我们可以使用Java编写一个工具,实现远程登录Linux并执行命令的功能,包括自动启动服务。...

    线上问题调查常用命令

    本篇文章将基于提供的文件信息,深入解析线上问题调查中常用的Linux性能检测工具及JVM性能相关命令,并提供详细的解释与应用场景。 #### Linux性能检测工具 **1. CPU性能检测** ##### 基本概念 - **上下文切换**...

    2015Linux命令常用最新

    在Linux操作系统中,掌握一些常用的命令是至关重要...了解并熟练使用这些基本的Linux命令,能够极大地提高你在系统管理和故障排查中的效率。通过不断的实践和学习,你可以掌握更多高级用法,从而更好地掌控Linux环境。

    史上最全的linux常用命令大全.zip

    本资源“史上最全的Linux常用命令大全.zip”包含了丰富的Linux命令教程,旨在帮助用户提升在Linux环境中的工作效率。 首先,我们来看“java项目本地环境搭建手册.pdf”。这通常涉及到Java开发人员在Linux环境下配置...

    Java 程序员眼中的 Linux.zip

    本资料包“Java程序员眼中的Linux.zip”提供了一份全面的Linux命令大全,旨在帮助Java开发者更好地理解和掌握Linux操作系统。 Linux命令是操作系统与用户交互的核心工具,熟练掌握这些命令能显著提高开发和运维效率...

    线上问题排查工具和手段

    在Linux系统中,除了使用上述提到的命令进行问题排查之外,还可以使用ifconfig查看和配置网络接口信息,使用df命令检查磁盘空间使用情况,以及使用ps命令查看和管理进程。这些命令为问题排查提供了丰富的信息和手段...

    Java线上故障排查方案.pdf

    #### 四、常用Linux分析命令 对于运行在Linux环境下的Java应用,熟练掌握以下命令可以帮助快速定位问题: 1. **CPU分析命令**: - `top`:显示当前系统的总体CPU使用情况。 - `mpstat`:提供详细的CPU统计信息,...

    java web linux笔记

    5. **work_pengxi.nyf**:这个文件名可能是作者的个人工作记录或者项目案例,可能包含了一些实际的Java Web应用开发和Linux系统管理经验,如问题排查、性能调优、服务器运维等。 整体来看,这份"Java Web Linux笔记...

    java在linux下的配置

    例如,Tomcat是常用的Java Web服务器,可以使用以下命令在Linux上安装: ```bash sudo apt install tomcat9 # Ubuntu sudo yum install tomcat # CentOS ``` 配置Tomcat涉及到修改`CATALINA_HOME`环境变量,设置...

    常用的linux系统监控命令整理.docx

    以下是一些常用的Linux系统监控命令,它们可以帮助我们追踪CPU使用、内存消耗、网络活动以及存储I/O等关键性能指标。 1. **`ps` 命令**: `ps -mp pid -o THREAD,tid,time` 或 `ps -Lfp pid` 用于找出占用CPU最多...

    Linux服务器常用命令(简化版).docx

    Linux服务器管理是IT运维工作中不可或缺的部分,而熟练掌握常用命令是提升工作效率的关键。本文将详细介绍几个重要的Linux服务器命令,包括keytool、rndc-confgen、umount.nfs、createdb和vacuumdb。 1. keytool...

    Linux命令培训指南

    ### Linux命令培训指南知识点详解 #### 一、学习要求 本指南主要面向Unix/C程序员与Java程序员,根据命令的重要程度划分不同的星级。其中,对于Unix/C程序员而言,3星及以上的命令是必须掌握的;而对于Java程序员,...

    10、linux命令(14题)1

    【Linux命令详解】 1. 创建文件的命令有多种方式: - `touch a.txt`:创建一个名为a.txt的新文件,如果文件已存在,将更新其时间戳。 - `vi a.txt`:使用vi(Visual Editor)编辑器创建新文件a.txt,进入编辑模式...

    Linux系统上web服务器管理命令

    本文将围绕“Linux系统上Web服务器管理命令”的主题,详细解析与之相关的常用命令及操作步骤。 #### 二、Oracle数据库服务管理 ##### 2.1 启动服务 - **启动命令**: 使用批处理文件`启服务器.bat`启动Oracle服务。 ...

    Linux常见命令手册

    以上命令为Linux系统中最常用的命令集合,通过熟练掌握这些命令,可以极大地提高在Linux环境下的工作效率和问题解决能力。无论是对于新手还是经验丰富的系统管理员来说,这份手册都是不可或缺的参考资料。

Global site tag (gtag.js) - Google Analytics