• btrace 常见问题


    执行btrace命令报错:Unable to open socket file: target process not responding or HotSpot VM not loaded

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

    -bash-4.1# /apps/svr/jdk7/bin/jstack/jps -l
    32382 sun.tools.jps.Jps
    20150 com.sun.btrace.client.Main

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

    -bash-4.1# /apps/svr/jdk7/bin/jstack -l 284
    284: Unable to open socket file: target process not responding or HotSpot VM not loaded

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

    -bash-4.1# /apps/svr/jdk7/bin/jstack -J-d64 -m 284
    Attaching to process ID 284, please wait...
    Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process

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

    jstack报错:Unable to open socket file。是因为这个java进程的pid文件删除了

    -bash-4.1# sudo -u root /apps/svr/jdk7/bin/jstack 284

    284: Unable to open socket file: target process not responding or HotSpot VM not loaded
    The -F option can be used when the target process is not responding

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

    linux操作系统为了防止/tmp目录文件过多,有个删除管理机制:tmpwatch

    -bash-4.1# cat /etc/cron.daily/tmpwatch
    #! /bin/sh
    flags=-umc
    /usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix
    -X '/tmp/hsperfdata_*' 10d /tmp
    /usr/sbin/tmpwatch "$flags" 30d /var/tmp
    for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
    /usr/sbin/tmpwatch "$flags" -f 30d "$d"
    fi
    done

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

    高版本jps、jstack不能工作原因:

    这是一个从Java 6 update 21 引入的bug sunbug 7009828,在Java 6 update 25修复。

    具体原因是: jdk16_21/24开始,jvm启动时产生进程号的临时文件目录优先使用-Djava.io.tmpdir指定的目录,没有指定-Djava.io.tmpdir参数才使用/tmp/hsperfdata_$USER。

    正好tomcat指定了-Djava.io.tmpdir=${tomcat_home}/tmp/。而jps、jstack从/tmp/hsperfdata_$USER目录读取不到pid信息,所以才报错。

    原因二:

    因为目标进程是另一个用户启动的,所以用root用户就jmap不了,换启动进程的那个用户就行了

    第2次如果再次用root用户输入这个命令,会报另一个错误:well-known file is not secure

    原因也是一样,目标进程是哪个用户启动的,就要用哪个用户来执行jmap命令 。

    查看端口:

    netstat -nlp | grep 2020

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

    sshpass -p pwd ssh -o StrictHostKeyChecking=no -p 22 root@127.0.0.1 nohup /btrace/bin/btrace -p 2020 -cp fastjson.jar 28541 CodeTrace.java >> /home/btrace/20170811.log &

    当另外一个用户执行脚本会报:well-known file is not secure,文件可能会僵死,不能写入文件,btrace进程也不能启动,这个问题造成我查了半天的时间。

    原因解析:

    /home/btrace/20170811.log 文件是root用户创建的,然后用app用户执行命令输出该文件,会导致命令无法启动,且没有任何错误日志。

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

    使用java process 执行 sshpass ssh tail grep 命令,日志不能实时:

    原因:由于tail -f 在尾部没有终止,所以数据可能仍在管道缓冲中。使用tail -f file | unbuffer -p grep keyword

    上面如果tail -f /logs/* | unbuffer -p keyword 就会报201错误,可以改成如下:

    tail -f file | grep --line-buffered my_pattern

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

    排查java oom问题:

    统计下目前的线程数(例如ps -eLf | grep java -c),然后可以看看ulimit -u的限制值是多少,如线程数已经达到限制值,如限制值可调整,则可通过调整限制值来解决。

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

    java使用process执行ssh tail命令后,ssh连接断开后关闭远程开启的进程的方法:

    ssh -t user@remote_host tail -f /some/file   OR   ssh -tt user@remote_host tail -f /some/file

    How to terminate remotely called “tail -f” when connection is closed?

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

    Linux ssh登录慢的问题解决方案

  • 相关阅读:
    Python自动化学习笔记(九)——Python的面向对象
    Python自动化学习笔记(八)——接口开发、发送网络请求、发送邮件、写日志
    MRWordCount
    环境变量追加命令
    hadoop退役旧数据节点
    Hadoop服役新数据节点
    Namenode文件损坏
    NameNode故障处理
    NN和2NN工作机制
    hdfs读写流程
  • 原文地址:https://www.cnblogs.com/ThinkVenus/p/7295020.html
Copyright © 2020-2023  润新知