[问题] 有办法不侵入式的执行code吗?

楼主: NullLife (废材大叔有点累)   2017-03-10 22:53:18
其实有点承上文,
我的需求是想控制Logstash(后称LS)这个东西,
它是Ruby写的东西,然后Run在JVM上面(JRuby),
因为有些状况,我想要侵入Logstash正在运行的JVM,
我想要控制它的Thread执行的速度,
在某些情况下,我必须要让LS慢下来不要跑这么快。
我一开始是想透过我的程式当作进入点,
再导向LS主程序,这样我就可以控制了,
但尴尬的是我不懂Ruby,所以也就不晓得怎么卡进去了。
后来我透过JMX,也看不出哪里可以让我插入执行的地方。
然后我又知道BTrace这东西,所以想利用它ASM的原理来完成我的需求。
我主要是不想动LS任何东西,就可以进入它的JVM做事情,
不晓得版上的大大对于这种需求有没有建议的方式?
作者: luoqr (.....)   2017-03-10 23:33:00
把LS多包一层当成自己的程式 然后自己插自己!(误)
作者: cowbaying (是在靠北喔)   2017-03-11 13:17:00
CLASSLOADER?
作者: qrtt1 (有些事,有时候。。。)   2017-03-11 17:08:00
机器不给力时就该换机器啊jvm 无缘无故不见,很可能就是机器本的的资源不足了啊。机器给不给力,不是单看它本身,还有一起共存的程式资源使用量。剩余资源不够时(例如内存)就可能触发 oom-killer另外,如果硬盘吃紧。应该优先考虑把档案弄上 storage,不管是 aws s3 或其他 cloud provider 都有方案或社群的plugin 可以使用。不过说到底,这套东西本身就吃比较多资源接 log 部分,可以为成 fluentd (native 版) 的,再导给elasticsearch + kibana 会比较顺一点。
作者: Killercat (杀人猫™)   2017-03-15 14:25:00
nice他不就好了 o_oa 或者参照cgroups

Links booklink

Contact Us: admin [ a t ] ucptt.com