• Linux上分析java程序的问题


    通过日志看不出来的问题,可以通过看java的堆栈信息(dump文件)来看出一些端倪。

    1. 找java的进程id、jdk/bin的目录

    ps -ef | grep java

    2. cd 到bin的目录,执行jstack命令

    ./jstack [pid]     需要在catalina_yyyy-MM-dd.log里面看dump信息

    ./jstack -l -F [pid]  强制打印栈信息,可以在console中看dump信息

    参数:

    -F   当’jstack [-l] pid’没有相应的时候强制打印栈信息

    -l   长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.

    -m 打印java和native c/c++框架的所有栈信息.

     

    必要时,查看catalina_xxxx.log的日志

     

    telnet 命令,查看网络情况

     

    top

    free -m 查看系统内存

    df -h 查看磁盘空间

     

    2016-08-03 问题: 最后定位到执行SQL时,线程BLOCK在那里不动,数据库连接池也没设置timeout,所以就一直挂在那里不动,后面的日志也打不出。最终发现,是在oracle客户端执行了一条delete语句,没有commit导致。

     

    jps 查看 java 进程
    jps -vm 查看 java 进程的启动信息

     

    下面这篇文章写的可以:

    http://loudou.info/blog/2014/03/01/yong-jstack-xian-cheng-ding-wei-chu-ti-yan/

  • 相关阅读:
    Ubuntu 16 安装ElasticSearch
    二叉树
    归并排序
    快速排序
    Git、Github使用
    445. 两数相加 II
    141. 环形链表
    92. 反转链表 II
    19. 删除链表的倒数第N个节点
    2. 两数相加
  • 原文地址:https://www.cnblogs.com/kevin-yuan/p/5734541.html
Copyright © 2020-2023  润新知