-
Notifications
You must be signed in to change notification settings - Fork 1.2k
-
安装失败
$:>curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|ksh downloading... greys.zip.43678 download file failed!
-
问:
为什么我在安装Greys的时候失败了?
-
答:
Greys的安装脚本首先先从阿里云上下载
greys.zip
,然后进行解压、安装。所以必须要求执行安装脚本的用户必须有对当前目录的写权限,一般出现这个问题,可以检查网络
、磁盘空间
以及当前目录是否有写权限
。
-
-
安装目录
-
问:
如果我在
/tmp/
目录下执行安装脚本,请问Greys会怎么安装? -
答:
安装在
/tmp/greys/
目录下,该目录下一共有两个重要文件- /tmp/greys/greys.jar
- /tmp/greys/greys.sh
其中
greys.jar
为greys的程序主体,启动类、加载类都在这个jar包当中。greys.sh
为一个可执行脚本,为Greys的入口。
-
-
如何删除
-
问:
安装的Greys如何进行删除?
-
答:
Greys是一个绿色环保软件,不会修改你的注册表,也不会在
$HOME
目录下偷偷创建什么隐藏文件,你需要的就是直接删除。
-
-
启动报
Operation not permitted
错误-
问:
我在启动Greys的时候报这样的错误
$:> ./greys 11064 start greys failed, because : Operation not permitted
-
答:
Greys要求执行执行启动命令的用户必须拥有和目标进程ID同样的权限(在这个Case中,目标进程ID为
11064
),否则JVM将无法挂载Greys对应的jar包
-
-
启动报
No such process
错误-
问:
我在启动Greys的时候报这样的错误
$:> ./greys 11063 start greys failed, because : No such process
-
答:
目标进程ID不存在。报这样的错误,请核对你的目标进程是否存在。
-
-
启动报
Unable to open socket file: target process not responding or HotSpot VM not loaded
- 问:
我在启动Greys的时候报这样的错误
$:> sudo -u admin ./greys 12592 密码: start greys failed, because : Unable to open socket file: target process not responding or HotSpot VM not loaded
-
答:
目标进程ID不是JVM进程,或目标JVM进程不支持加载操作,比如低于JDK6的版本等。 一般遇到这种问题一定要非常小心谨慎的执行,如果对方进程编程不严谨,很可能会让对方进程CORE掉。上次我就弄死了个nginx的worker -_-!!
-
启动没有响应
-
问:
启动之后就什么反应也没有,也没有出现预期的
ga?>
提示符 -
答:
很有可能你的3658端口已经被别的进程占据,请核对你当前机器所开的端口
netstat -anp|grep LIST
解决方案也很简单,换个端口
./greys.sh 4567@127.0.0.1:6666
-
-
sudo -u
方式启动报权限不足请给你的sudo命令加上
-H
参数sudo -u admin -H ./greys.sh 4567
-
哪些命令会导致性能问题
Greys的大部分命令性能开销都非常低廉,当然前提是一次性操作的类不要太多。
-
是否能增强由BootstrapClassLoader所加载的类
当然是可以的,但默认我封印了这个能力。主要是Greys自己也使用了大量BootstrapClassLoader所加载的类,如果处理不好极其容易造成故障。
你可以通过隐藏命令
options
激活这个功能ga?>options unsafe true +--------+--------------+-------------+ | NAME | BEFORE-VALUE | AFTER-VALUE | +--------+--------------+-------------+ | unsafe | false | true | +--------+--------------+-------------+ Affect(row-cnt:1) cost in 2 ms.
接下来你可以尝试增强系统类了
ga?>monitor -c 5 java.lang.String substring Press Ctrl+D or Ctrl+X to abort. Affect(class-cnt:1 , method-cnt:2) cost in 35 ms. +---------------------+------------------+-----------+-------+---------+------+------+-----------+ | timestamp | class | method | total | success | fail | rt | fail-rate | +---------------------+------------------+-----------+-------+---------+------+------+-----------+ | 2015-06-16 23:44:54 | java.lang.String | substring | 30 | 30 | 0 | 0.23 | 0.00% | +---------------------+------------------+-----------+-------+---------+------+------+-----------+
但我话就放在这里,随意增强系统类。后果自负!
-
Greys支持将信息输出到文件中么?
支持,不过要做一些小命令。
./greys.sh 4567|tee -a ./greys.log
-
Greys必须使用在Sun JDK6+的版本么?
很遗憾抱歉的说,是的。
Greys的原理和Btrace一样,依赖了JDK6+提供的
Instumentation
特性,所以必须要求目标的JDK环境是JDK6及其以上的版本。理论上Greys应该能在各种实现了SUN标准的各种JVM实现中运行,比如
JRockit
、Zing
等,但我自己没有机会尝试,若有环境能进行测试,我将不胜感激。JRE中由于缺少tools.jar,所以无法直接运行Greys,需要稍作一些修改。同样的也没有需求要在JRE中运行Greys,我这里也偷个懒,留给其他有需要的人来实现吧。
-
程序中是否有彩蛋?
有,自己找!