[問題] 有辦法不侵入式的執行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