执行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登录慢的问题解决方案

btrace 常见问题的更多相关文章

  1. HBase工程师线上工作经验总结----HBase常见问题及分析

    阅读本文可以带着下面问题:1.HBase遇到问题,可以从几方面解决问题?2.HBase个别请求为什么很慢?你认为是什么原因?3.客户端读写请求为什么大量出错?该从哪方面来分析?4.大量服务端excep ...

  2. (转)HBase工程师线上工作经验总结----HBase常见问题及分析

    阅读本文可以带着下面问题:1.HBase遇到问题,可以从几方面解决问题?2.HBase个别请求为什么很慢?你认为是什么原因?3.客户端读写请求为什么大量出错?该从哪方面来分析?4.大量服务端excep ...

  3. Hadoop记录-hadoop集群常见问题汇总

    [问题1]HBase Shell:ERROR: org.apache.hadoop.hbase.IPc.ServerNotRunningYetException: Server is not runn ...

  4. JAVA线上常见问题排查手段(小结)

    在平时开发过程中,对于线上问题的排查以及系统的优化,免不了和Linux进行打交道.每逢大促和双十一,对系统的各种压测性能测试,优化都是非常大的一次考验.抽空整理了一下自己在线上问题排查以及系统优化的一 ...

  5. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  6. SQL Server常见问题介绍及快速解决建议

    前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题.这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架. 下面一些问题是 ...

  7. 【腾讯优测干货分享】如何降低App的待机内存(二)——规范测试流程及常见问题

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/806TiugiSJvFI7fH6eVA5w 作者:腾讯TMQ专项测 ...

  8. mysql数据库开发常见问题及优化

    mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...

  9. 《PDF.NE数据框架常见问题及解决方案-初》

    <PDF.NE数据框架常见问题及解决方案-初> 1.新增数据库后,获取标识列的值: 解决方案:    PDF.NET数据框架,已经为我们考略了很多,因为用PDF.NET进行数据的添加操作时 ...

随机推荐

  1. Java Class Object

    Object类 它是所有类的基类. public class Person { } //实际上是 public class Person extends Object { } Object类的方法 t ...

  2. 向redis插入数据时,返回值问题

    向redis插入数据时,如果redis没有要插入的key,插入成功之后返回值为1 如果redis有这个key,插入成功之后返回值是0

  3. lol人物模型提取(一)

      前段时间去青岛搞团建去了,闲来无事逛了会儿淘宝,无想买个lol手办,意之间发现了这张店铺宣传图:   哎呀我去,这模型做得挺逼真啊,然而这家店铺是卖zoe的cosplay道具的,不是手办-_-|| ...

  4. Window命令行工具操作文件

    1,cd 命令用来切换目录 2,mkdir用来创建文件夹 3,rmdir用来删除空文件夹 4,创建指定类型的文件 type nul>"文件名和后缀" 5,打开指定文件用sta ...

  5. SPDY以及HTTP2.0

    背景介绍 HTTP2.0跟SPDY在不少理念上是相似的,目的都是为了提升HTTP1.1的性能. HTTP2.0将会是业界的标准,比SPDY要完善,今后可能会都转向http2.0而放弃SPDY. SPD ...

  6. vue-cli项目里npm安装使用elementUI

    第一步:进入到项目目录里 npm i element-ui -S 第二步:在main.js中引入 import ElementUI from 'element-ui' import 'element- ...

  7. React Components Template

    React Components Template "use strict"; /** * * @author xgqfrms * @license MIT * @copyrigh ...

  8. 第29天:js-数组添加删除、数组和字符串相互转换

    一.添加数组var arr=[1,3,5];arr.push(7,9);//添加7和9到数组arr后面,得到[1,3,5,7,9]1.push();可向数组末尾添加一个或多个元素,并返回新的长度.2. ...

  9. BZOJ 1415 聪聪和可可(期望DP)

    我们可以用n次BFS预处理出 to[][]数组,to[i][j]表示聪聪从i点到j点第一步会走哪个点. 那么对于聪聪在i点,可可在j点,聪聪先走,定义dp[i][j]表示步数期望. 那么显然有dp[i ...

  10. sql批量更新关系型数据库

    更改gb_groupd里的chargingrulesname的值UPDATE   tb_group SET tb_group.chargingrulesname =tb_chargingrules.c ...