java应用出现问题查看步骤

判断操作系统层面的问题,我通过以下命令查看,昨天都已经试过了,应该没有问题。

  1. netstat –an 看是否有大量time_wait或者close_wait,以进一步判断是否程序有没有关闭连接的情况(time_wait),或者操作系统关闭连接等待时间过长(close_wait);
  2. 如果发现netstat –an有大量的连接,且应用程序使用的是阻塞式IO,那么需要判断ulimit –n,看操作系统句柄数量是否足够;
  3. 使用top命令查看CPU和内存占用情况,通常我们的应用都是IO密集型的,所以CPU过高的情况较少,主要关注内存占用情况。

Mem:   3925908k total,  3787840k used,   138068k free,    12716k buffers

Swap:  4063224k total,  2030264k used,  2032960k free,   596756k cached

内存有问题的情况:

free + buffers + cached 综合比较小

或者swap free很少

  4. 使用df –h关注一下磁盘空间,有些情况下是磁盘空间不足导致应用吞吐量下降;

  5. 对于多线程的程序,可以通过vmstat 命令,查看cs项,来判断多线程切换的情况(由于目前应用都是使用dubbo构建服务,所以在现有压力下,这块出问题的可能性较小)。

  6. 最后一招就是实用jdk自带的工具,有条件可以使用图形界面的jvisualvm,没有条件的可以使用jstack等工具。

时间: 2025-01-05 15:05:54

java应用出现问题查看步骤的相关文章

java web 手动部署项目步骤

java Web 手动部署项目步骤 1 在tomcat下面的webapps下面建立需要部署的文件夹(eg:demo);2 在demo下建立 WEB-INF WETA-INF src 文件夹;3 在src下建立新的servlet.java文件4 在WEB-INF下面建立classes和web.xml文件 5通过命令“javac -d 目录地址 文件名” 编译servlet,前提是必须把tomcat目录下的lib里面的servlet-api.jar拷贝到当前的servlet源文件目录下. 在配置环境

Java Log Viewer日志查看器

工欲善其事必先利其器 在投奔怒海--一个Domino老程序员眼里的Java开发我提到目前所做的Java开发中遇到的大量日志之问题.服务器控制台刷屏似地滚动,日志文件飞快地增长,debug的时候相关信息常常被例常日志淹没,在众多Logger滔滔不绝的输出下,要找出错误所在有时都挺费眼.日志的作用无可置疑,大型项目中日志海量产生也不少见.在以前的Domino开发中,Domino服务器在产生日志方面相当节制,程序员对日志的依赖程度也不高.转换到Java开发,我用一直最喜爱的文本编辑器EditPlus肉

如何快速配好java环境变量和查看电脑上安装JDK的版本位数

[java] view plaincopy 今天一个新手在群里问自己的Eclipse打不开,然后我是属于那种热心肠的人,一般自己知道的就会告诉他们,看了下,是环境变量没有配好,反正我觉得配环境比较简单,现在就教大家简单的环境变量配法 path ----- 输入jdk里面bin的目录,例如D:\mtools\win32-x86\java\jdk1.7.0\bin classpath   ------直接输入一点 注意是"." OK 然后在cmd下面输入java -version 我告诉他

【黑马程序员】--Java环境变量的配置步骤及JDK、JRE

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- ----- 我是Hakka_LGM,请多多指教 Java环境变量的配置步骤 工具 1.JDK1.8.0 2.WIN7 x64.win8 x64 步骤 安装JDK 选择安装目录 安装过程中会出现两次 安装提示 .第一次是安装 jdk ,第二

【J2SE】java实现简单照片查看器

程序运行结果: 工程结构图: 程序代码: import java.awt.BorderLayout; import java.awt.FileDialog; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.Ke

java环境变量详细配置步骤

1 下载jdk. a 官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 本来准备云盘分享,结果云盘分享失败. 各位只能去官网下载. 自己下载,看自己是什么系统,这讲解windos设置.点下载之前,勾选到红色圈圈,不然不可以下载. 2  安装傻瓜式安装, 记住安装地址就可以了.不会设置就不要乱改. 3 设置JAVA_HOME:  win7 设置环境变量  计算机右击----属

java开发GUI程序一般步骤:

开发GUI程序一般步骤: 1. 引包 import java.awt.*; import javax.swing.*; 2. 继承JFrame public class Demo3 extends JFrame {} 3. 定义需要的组件 //3.定义组件 JButton jb1,jb2,jb3,jb4,jb5; int size=9; JButton jbs[]=new JButton[size]; //先分配初始空间 4. 创建组件 //4.创建组件 jb1=new JButton("中部&

10.8-全栈Java笔记:序列化/反序列化的步骤和实例

本节我们详细讲解10.3节中提到的序列化和反序列化操作. 序列化和反序列化是什么 当两个进程远程通信时,彼此可以发送各种类型的数据. 无论是何种类型的数据,都会以二进制序列的形式在网络上传送.比如,我们可以通过http协议发送字符串信息:我们也可以在网络上直接发送JAVA对象.发送方需要把这个Java对象转换为字节序列,才能在网络上传送:接收方则需要把字节序列再恢复为Java对象. 把Java对象转换为字节序列的过程称为对象的序列化.把字节序列恢复为Java对象的过程称为对象的反序列化. 对象序

绘图.java(小程序查看器)

//<applet code=Draw.class width=400 height=300></applet> import java.awt.*;import java.applet.*;     public class Draw extends Applet     {         public void paint(Graphics g)         {             g.setColor(Color.YELLOW);             g.dra