国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Arthas 獲取Spring ApplicationContext還原問(wèn)題現(xiàn)場(chǎng)

Amos / 1410人閱讀

摘要:背景最近來(lái)了個(gè)實(shí)習(xí)僧小弟,安排他實(shí)現(xiàn)對(duì)目標(biāo)網(wǎng)站連通性檢測(cè)的小功能簡(jiǎn)單講就是將下邊的腳本換成代碼來(lái)實(shí)現(xiàn)百度平臺(tái)狀態(tài)不正常,請(qǐng)注意功能實(shí)現(xiàn)使用開(kāi)始執(zhí)行定時(shí)任務(wù),檢測(cè)百度網(wǎng)站連通性請(qǐng)求百度成功,返回報(bào)文請(qǐng)求異常百度執(zhí)行檢測(cè)百度網(wǎng)站連通

背景

最近來(lái)了個(gè)實(shí)習(xí)僧小弟,安排他實(shí)現(xiàn)對(duì)目標(biāo)網(wǎng)站 連通性檢測(cè)的小功能,簡(jiǎn)單講就是將下邊的shell 腳本換成Java 代碼來(lái)實(shí)現(xiàn)

 1#!/bin/bash
 2URL="https://www.baidu"
 3HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`
 4#echo $HTTP_CODE
 5if [ $HTTP_CODE != "200" ];then
 6curl "https://oapi.dingtalk.com/robot/send?access_token=xx" 
 7   -H "Content-Type: application/json" 
 8   -d "{"msgtype": "text",
 9        "text": {
10             "content": "百度平臺(tái)狀態(tài)不正常,請(qǐng)注意!"
11        },
12        "isAtAll": true
13      }"
14
15fi
功能實(shí)現(xiàn) 使用spring task
 1@Scheduled(cron = "0 0 0/1 * * ? ")
 2public void startSchedule() {
 3    log.info("開(kāi)始執(zhí)行定時(shí)任務(wù) ,檢測(cè)百度網(wǎng)站連通性");
 4    try {
 5        HttpResponse response = HttpRequest.get("").execute();
 6        if (HttpStatus.HTTP_OK != response.getStatus()) {
 7            this.send2DingTalk(response.getStatus());
 8        }
 9        log.info("請(qǐng)求百度成功,返回報(bào)文:{}",response.body());
10    } catch (HttpException e) {
11        log.error("請(qǐng)求異常百度:{}", e);
12        this.send2DingTalk(e.getMessage());
13    }
14    log.info("執(zhí)行檢測(cè)百度網(wǎng)站連通任務(wù)完畢");
15}
問(wèn)題描述

部署在服務(wù)器上,我的老jio本 都已經(jīng)呼叫任務(wù)狀態(tài)不正常了,可是小弟的Java 代碼還是沒(méi)有執(zhí)行通知

去翻生產(chǎn)日志,只輸入了開(kāi)始并沒(méi)有輸出定時(shí)任務(wù)結(jié)束,感覺(jué)是哪里卡死,想當(dāng)然以為如果超時(shí)總會(huì)到catch 邏輯,排查無(wú)果

由于任務(wù)是一小時(shí)一次,如何快速觸發(fā)一下這個(gè)異常,還原事故現(xiàn)場(chǎng)

由于使用簡(jiǎn)單的Spring Task 沒(méi)有圖形化界面和API接口

Arthas 還原事故現(xiàn)場(chǎng),重新觸發(fā)任務(wù)

核心拿到 spring context 然后執(zhí)行它的 startSchedule 方法

確定監(jiān)控點(diǎn)

SpringMVC 的請(qǐng)求會(huì)通過(guò) RequestMappingHandlerAdapter 執(zhí)行invokeHandlerMethod 到達(dá)目標(biāo)接口上進(jìn)行處理

而在 RequestMappingHandlerAdapter類中有 getApplicationContext()

1@Nullable
2public final ApplicationContext getApplicationContext() throws IllegalStateException {
3    if (this.applicationContext == null && this.isContextRequired()) {
4        throw new IllegalStateException("ApplicationObjectSupport instance [" + this + "] does not run in an ApplicationContext");
5    } else {
6        return this.applicationContext;
7    }
8}

任意執(zhí)行一次請(qǐng)求獲取到 RequestMappingHandlerAdaptertarget 目標(biāo),然后執(zhí)行 getApplicationContext

tt命令 獲取到ApplicationContext

arthas 執(zhí)行 tt

1tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod

任意執(zhí)行一次web 請(qǐng)求,tt 即可捕獲

根據(jù)目標(biāo)的索引,執(zhí)行自定義 OGNL 表達(dá)式即可

1tt -i 1019 -w "target.getApplicationContext()"

使用ApplicationContext獲取 定時(shí)任務(wù)bean 執(zhí)行 startSchedule
1tt -i 1000 -w "target.getApplicationContext().getBean("baiduSchedule").startSchedule()"

ok 任務(wù)重新觸發(fā)了

事故原因調(diào)查清楚,由于使用hutool 的工具類 沒(méi)有設(shè)置timeout 導(dǎo)致無(wú)限等待,所以沒(méi)有執(zhí)行catch 邏輯

總結(jié)

以上嚇哭實(shí)習(xí)僧的操作禁止生產(chǎn)操作,只是提供個(gè)思路 ,當(dāng)然可以衍生其他業(yè)務(wù)場(chǎng)景的操作

核心是通過(guò)Arthas 來(lái)抓取Spring ApplicationContext 對(duì)象,然后獲取bean 進(jìn)行執(zhí)行方法

關(guān)于Arthas 是Alibaba開(kāi)源的Java診斷工具,深受開(kāi)發(fā)者喜愛(ài)

歡迎關(guān)注我們獲得更多的好玩JavaEE 實(shí)踐

推薦閱讀:

《深入理解 Java 內(nèi)存模型》讀書筆記

面試-基礎(chǔ)篇

Spring Boot 2.0 遷移指南

SpringBoot使用Docker快速部署項(xiàng)目

為什么選擇 Spring 作為 Java 框架?

SpringBoot RocketMQ 整合使用和監(jiān)控

Spring Boot 面試的十個(gè)問(wèn)題

使用 Spring Framework 時(shí)常犯的十大錯(cuò)誤

SpringBoot Kafka 整合使用

SpringBoot RabbitMQ 整合使用

上篇好文:

如何優(yōu)雅關(guān)閉 Spring Boot 應(yīng)用

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75911.html

相關(guān)文章

  • 使用Arthas 獲取Spring ApplicationContext還原問(wèn)題現(xiàn)場(chǎng)

    摘要:背景最近來(lái)了個(gè)實(shí)習(xí)僧小弟,安排他實(shí)現(xiàn)對(duì)目標(biāo)網(wǎng)站連通性檢測(cè)的小功能簡(jiǎn)單講就是將下邊的腳本換成代碼來(lái)實(shí)現(xiàn)百度平臺(tái)狀態(tài)不正常,請(qǐng)注意功能實(shí)現(xiàn)使用開(kāi)始執(zhí)行定時(shí)任務(wù),檢測(cè)百度網(wǎng)站連通性請(qǐng)求百度成功,返回報(bào)文請(qǐng)求異常百度執(zhí)行檢測(cè)百度網(wǎng)站連通 背景 最近來(lái)了個(gè)實(shí)習(xí)僧小弟,安排他實(shí)現(xiàn)對(duì)目標(biāo)網(wǎng)站 連通性檢測(cè)的小功能,簡(jiǎn)單講就是將下邊的shell 腳本換成Java 代碼來(lái)實(shí)現(xiàn) #!/bin/bash UR...

    xeblog 評(píng)論0 收藏0
  • Java動(dòng)態(tài)追蹤技術(shù)探究

    摘要:對(duì)于人類來(lái)說(shuō),字節(jié)碼文件的可讀性遠(yuǎn)遠(yuǎn)沒(méi)有代碼高。盡管如此,還是有一些杰出的程序員們創(chuàng)造出了可以用來(lái)直接編輯字節(jié)碼的框架,提供接口可以讓我們方便地操作字節(jié)碼文件,進(jìn)行注入修改類的方法,動(dòng)態(tài)創(chuàng)造一個(gè)新的類等等操作。 引子 在遙遠(yuǎn)的希艾斯星球爪哇國(guó)塞沃城中,兩名年輕的程序員正在為一件事情苦惱,程序出問(wèn)題了,一時(shí)看不出問(wèn)題出在哪里,于是有了以下對(duì)話: Debug一下吧。 線上機(jī)器,沒(méi)開(kāi)Debu...

    BlackFlagBin 評(píng)論0 收藏0
  • Java診斷工具Arthas

    摘要:診斷工具簡(jiǎn)介是阿里開(kāi)源的一個(gè)線上診斷工具,發(fā)現(xiàn)阿里還是挺喜歡開(kāi)源一些技術(shù)的,造福人類。昨天試用了一下,發(fā)現(xiàn)真是強(qiáng)大,解決了我工作兩年的很多困擾,有點(diǎn)相見(jiàn)恨晚的感覺(jué)。每秒統(tǒng)計(jì)方法的調(diào)用次數(shù),成功失敗次數(shù)和平均響應(yīng)時(shí)間等。具體使用請(qǐng)見(jiàn)。 Java診斷工具Arthas 1. Arthas簡(jiǎn)介 Arthas是阿里開(kāi)源的一個(gè)線上java診斷工具,發(fā)現(xiàn)阿里還是挺喜歡開(kāi)源一些技術(shù)的,造福人類。昨天試...

    happyfish 評(píng)論0 收藏0
  • 愛(ài)上Java診斷利器之Arthas

    摘要:是什么摘自的介紹大意為是阿里開(kāi)源的一個(gè)診斷工具,可以幫助開(kāi)發(fā)人員在不修改代碼或重啟服務(wù)器的情況下快速定位線上問(wèn)題。聽(tīng)起來(lái)確實(shí)是我們的程序員的一大福利。參考資料使用手冊(cè) 1. Arthas是什么? 摘自Arthas的Github介紹: Arthas is a Java Diagnostic tool open sourced by Alibaba. Arthas allows deve...

    Hancock_Xu 評(píng)論0 收藏0
  • 推薦一款阿里開(kāi)源的 Java 診斷工具,好用到爆!

    摘要:是什么鬼是一款阿里巴巴開(kāi)源的線上診斷工具,功能非常強(qiáng)大,可以解決很多線上不方便解決的問(wèn)題。診斷使用的是命令行交互模式,支持,操作系統(tǒng),命令還支持使用鍵對(duì)各種信息的自動(dòng)補(bǔ)全,診斷起來(lái)非常利索。顯示當(dāng)前系統(tǒng)的實(shí)時(shí)數(shù)據(jù)面板,按即可退出。 Arthas是什么鬼? Arthas是一款阿里巴巴開(kāi)源的 Java 線上診斷工具,功能非常強(qiáng)大,可以解決很多線上不方便解決的問(wèn)題。 Arthas診斷使用的是...

    Rango 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<