[問題] 有辦法不侵入式的執行code嗎?

看板java作者 (接下來如何?)時間8年前 (2017/03/10 22:53), 8年前編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/1
其實有點承上文, 我的需求是想控制Logstash(後稱LS)這個東西, 它是Ruby寫的東西,然後Run在JVM上面(JRuby), 因為有些狀況,我想要侵入Logstash正在運行的JVM, 我想要控制它的Thread執行的速度, 在某些情況下,我必須要讓LS慢下來不要跑這麼快。 我一開始是想透過我的程式當作進入點, 再導向LS主程序,這樣我就可以控制了, 但尷尬的是我不懂Ruby,所以也就不曉得怎麼卡進去了。 後來我透過JMX,也看不出哪裡可以讓我插入執行的地方。 然後我又知道BTrace這東西,所以想利用它ASM的原理來完成我的需求。 我主要是不想動LS任何東西,就可以進入它的JVM做事情, 不曉得版上的大大對於這種需求有沒有建議的方式? -- 你只是大大的世界中小小的一個島嶼 在你懷中長大的我們 從未忘記 我要用全部的力氣唱出對你的深情 歌聲中 只是真心的讚美 929 吳志寧 也有感謝和依戀 疼惜和憂煩 全心全意愛你 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.65.102 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1489157602.A.181.html

03/10 23:33, , 1F
把LS多包一層當成自己的程式 然後自己插自己!(誤)
03/10 23:33, 1F

03/11 13:17, , 2F
CLASSLOADER?
03/11 13:17, 2F

03/11 17:08, , 3F
機器不給力時就該換機器啊
03/11 17:08, 3F
我想我得解釋清楚一點(但說起來好累啊), 倒也不是機器給不給力的問題... 是我們使用ELKstack這個東西, 我們使用架構也如同官方說明: https://www.elastic.co/guide/en/logstash/5.2/ deploying-and-scaling.html#deploying-message-queueing (抱歉...請自己接上連結,PTT縮址會被限制發文QQ) 整套ELKstack分散在四台機器上,跟各個要收log的host, 問題就在環境不穩,動不動就網路不通、或者硬碟突然被塞滿、 甚至莫名其妙VM掉下來(不要問我為什麼,我也不想這樣...) 任一個環節出問題,只要Queue滿了,整條路都會不通, 不通之後LS這傢伙從File收到的資料送不出去, 就會被當作錯誤而被丟棄,造成資料遺失... 而我想做的就是監控整個環節, 當異常的時候我需要控制所有shipper(約有20來個LS)停下來, 或者是繁忙的時候,我要讓他們慢下來... (我知道官方後來推Filebeat當作前端shipper,但目前無法更換架構...) 而我不想修改LS任何東西的原因在於未來升版的話會是一個麻煩點, 因為這樣我的控制機制跟LS有過高的相依性, 所以我才想採用JMX或者是BTrace這種而外侵入的方式來做。 我是有想了很多偏方,就是監控透過SSH進去該台機器下指令停止, 或者LS啟動TCP的input來接受訊號處理。 但我想既然他是JVM,那就透過JMX或其他JAVA的方法來做,比較實際。 一方面是私心想玩java的東西,一方面是如果透過Linux基礎來做, 意味著如果未來有其他OS的log需要納管,這招就會行不通... 說了這麼多,就是想像BTrace一樣,一個JVM跑得好好的, 想隨時插進去看狀況甚至控制一些事情,不曉得這樣各位大大有無好建議? (仔細想想,這樣好像變成駭客行為,而且一不小心就有漏洞出現QQ) ※ 編輯: NullLife (114.42.65.102), 03/11/2017 21:25:12

03/12 11:52, , 4F
jvm 無緣無故不見,很可能就是機器本的的資源不足了啊。
03/12 11:52, 4F

03/12 11:53, , 5F
機器給不給力,不是單看它本身,還有一起共存的程式資源使
03/12 11:53, 5F

03/12 11:54, , 6F
用量。剩餘資源不夠時(例如記憶體)就可能觸發 oom-killer
03/12 11:54, 6F

03/12 11:54, , 7F
另外,如果硬碟吃緊。應該優先考慮把檔案弄上 storage,
03/12 11:54, 7F

03/12 11:55, , 8F
不管是 aws s3 或其他 cloud provider 都有方案或社群的
03/12 11:55, 8F

03/12 11:55, , 9F
plugin 可以使用。不過說到底,這套東西本身就吃比較多資源
03/12 11:55, 9F

03/12 11:56, , 10F
接 log 部分,可以為成 fluentd (native 版) 的,再導給
03/12 11:56, 10F

03/12 11:56, , 11F
elasticsearch + kibana 會比較順一點。
03/12 11:56, 11F
感謝qrtt1大大, 可惜無奈現實考量,不是說缺馬上就有硬體resource可以用的... 但我會研究一下fluentd,感謝<(_ _)> ※ 編輯: NullLife (114.42.68.46), 03/12/2017 19:51:53

03/15 14:25, , 12F
nice他不就好了 o_oa 或者參照cgroups
03/15 14:25, 12F
文章代碼(AID): #1OmhtY61 (java)
文章代碼(AID): #1OmhtY61 (java)