国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

記一次javaMetaspace導(dǎo)致CPU200%的排查

這篇具有很好參考價(jià)值的文章主要介紹了記一次javaMetaspace導(dǎo)致CPU200%的排查。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、場(chǎng)景

insertMotionDataByWxCallBack方法并發(fā)多(其實(shí)也沒(méi)多少,可能就3個(gè)?)就導(dǎo)致CPU200%了,本地沒(méi)法復(fù)現(xiàn)。
看報(bào)錯(cuò)是:java.lang.OutOfMemoryError: Metaspace,剛開(kāi)始的時(shí)候眼挫,忽略了后面的Metaspace,只看到了OutOfMemoryError,就各種找代碼問(wèn)題。

2、裝arthas

https://arthas.aliyun.com/doc/install-detail.html

cd /opt/apps/arthas/
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
選擇進(jìn)程
dashboard
# 查看top3的進(jìn)程號(hào)
thread -n 3
  • 然后發(fā)現(xiàn),當(dāng)cpu200的時(shí)候,根據(jù)掛載不上arthas
  • 建議用:https://club.kdcloud.com/article/180683020100514560?productLineId=29
top -b -d2 -n3 -H -p 1 | grep 'top -' -A 17 > slow.log && jstack -l 1 >> slow1.log
  • 然后下載下來(lái)搜索進(jìn)程號(hào)
  • 然后發(fā)現(xiàn)沒(méi)什么用(可能是我不會(huì)用?)如果真的要用top+jstack,一定要謹(jǐn)慎謹(jǐn)慎謹(jǐn)慎,我把機(jī)器搞崩了,你沒(méi)聽(tīng)錯(cuò),是機(jī)器,不是java進(jìn)程,機(jī)器直接掛了,ping ip都ping不通,只好斷電重啟,后面分析系統(tǒng)日志,是內(nèi)存爆了

3、分析代碼

  • 沒(méi)去找Metaspace的問(wèn)題,而去找代碼了,沒(méi)想到還真找到一個(gè)問(wèn)題,但是cpu200不是這個(gè)引起的,這里也記一下
  • 分析了一通代碼后,發(fā)現(xiàn)可能是文件流沒(méi)關(guān)的原因:
  • 原始代碼如下:
motionApprovalReturnVO.getFileMap()如下:
private Map<String, InputStream> fileMap = new HashMap<>();


List<ContentValue.File> files = content.getValue().getFiles();
if (CollectionUtils.isNotEmpty(files)) {
    List<String> fileIds = files.stream().map(ContentValue.File::getFileId).collect(Collectors.toList());
    fileIds.forEach(fileId -> {
        try {
            File download = cpService.getMediaService().download(fileId);
            motionApprovalReturnVO.getFileMap().put(download.getName(), new FileInputStream(download));
        } catch (Exception e) {
            LOGGER.info("getMediaService download:media_id:{} 下載失敗", fileId);
        }

    });
}
  • 在后面調(diào)用alioss上傳也沒(méi)有close資源
private List<ILabAttachment> pullWxFile2Oss(Map<String, InputStream> fileMap) {
    if (MapUtils.isEmpty(fileMap)) {
        return new ArrayList<>();
    }
    Map<String, String> fileUrls = ossService.uploadByStream(fileMap);
    return buildILabAttachment(fileUrls);
}

private List<ILabAttachment> buildILabAttachment(Map<String, String> fileUrls) {
    if (MapUtils.isEmpty(fileUrls)) {
        return new ArrayList<>();
    }
    List<ILabAttachment> iLabAttachments = new ArrayList<>();
    fileUrls.forEach((fileName, url) -> {
        ILabAttachment iLabAttachment = new ILabAttachment();
        iLabAttachment.setName(fileName);
        iLabAttachment.setUrl(url);
        iLabAttachments.add(iLabAttachment);
    });
    return iLabAttachments;
}
  • 原本是想著批量上傳能快一點(diǎn),好心辦壞事,忽略了close FileInputStream
  • 修改一下代碼:
List<ContentValue.File> files = content.getValue().getFiles();
if (CollectionUtils.isNotEmpty(files)) {
    List<String> fileIds = files.stream().map(ContentValue.File::getFileId).collect(Collectors.toList());
    fileIds.forEach(fileId -> {
        try {
            File download = cpService.getMediaService().download(fileId);
            try (FileInputStream inputStream = new FileInputStream(download)) {
                // 處理文件流
                String fileOssUrl = ossService.uploadByStream(inputStream, download.getName());
                motionApprovalReturnVO.getFileUrlMap().put(download.getName(), fileOssUrl);
                download.delete();
            } catch (IOException e) {
                // 異常處理
                LOGGER.error("try (FileInputStream inputStream = new FileInputStream(download)) error");
            }
        } catch (Exception e) {
            LOGGER.error("getMediaService download:media_id:{} 下載失敗", fileId);
        }

    });
}
  • 用java7中的try-with-resource 語(yǔ)法來(lái)自動(dòng)釋放
  • 然后發(fā)現(xiàn)依然不是這里的問(wèn)題,如果是文件導(dǎo)致的不應(yīng)該是java.lang.OutOfMemoryError: Metaspace

4、罪魁禍?zhǔn)?/h3>
  • 后來(lái)本地 用VisualVM監(jiān)控了下程序,發(fā)現(xiàn)Metaspace有70M了,而服務(wù)器上jvm啟動(dòng)參數(shù)只有64M?。。。。?!
  • 原來(lái)的
-XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m

修改后

-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m
  • 真實(shí)奇恥大辱,下次眼睛還是認(rèn)真一點(diǎn)看吧

end.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-423039.html

到了這里,關(guān)于記一次javaMetaspace導(dǎo)致CPU200%的排查的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 記一次Nacos線(xiàn)程數(shù)飆升排查

    記一次Nacos線(xiàn)程數(shù)飆升排查

    近日有個(gè)項(xiàng)目用到了Nacos做注冊(cè)中心。運(yùn)行一段時(shí)間發(fā)現(xiàn)Nacos服務(wù)的線(xiàn)程數(shù)達(dá)到了1k+。這肯定是不正常的。 環(huán)境: 鏡像nacos-server 2.2.3 docker-compose編排部署 Nacos standalone模式 問(wèn)題表現(xiàn) docker stats nacos 發(fā)現(xiàn)該容器的線(xiàn)程數(shù)1k+ 用Fastthread分析stack文件表現(xiàn)如下 數(shù)量最多的線(xiàn)程線(xiàn)程棧如

    2024年02月09日
    瀏覽(30)
  • 記一次線(xiàn)上BUG排查過(guò)程

    記一次線(xiàn)上BUG排查過(guò)程

    1. 線(xiàn)上遇到一個(gè)非常奇怪的bug,為一個(gè)用戶(hù)分配業(yè)務(wù)線(xiàn)類(lèi)型后,該用戶(hù)登錄時(shí),提示502,但其它的用戶(hù)登錄完全是正常的 2. 問(wèn)題現(xiàn)象 3. 排查思路 先去看線(xiàn)上日志,看是否有error,但日志里邊這個(gè)接口200正常返回 本地debug,也復(fù)現(xiàn)一樣問(wèn)題,在分配角色類(lèi)型超過(guò)22個(gè)總數(shù)時(shí)就報(bào)

    2024年02月09日
    瀏覽(30)
  • 記一次kafka消息積壓的排查

    kafka消息積壓報(bào)警,首先進(jìn)行了自查,這個(gè)現(xiàn)象頻頻出現(xiàn),之前每次都是先重新分配分區(qū)或者回溯(消息可丟棄防止大量積壓消費(fèi)跟不上)。 根據(jù)手冊(cè)首先排查下消息拉取是否正常,看到了消息拉取線(xiàn)程是waiting狀態(tài),然后看到kafka這塊邏輯是消費(fèi)線(xiàn)程阻塞了拉取線(xiàn)程。 對(duì)比了

    2024年03月24日
    瀏覽(22)
  • 記一次docker啟動(dòng)失敗的問(wèn)題排查

    記一次docker啟動(dòng)失敗的問(wèn)題排查

    以前在虛擬機(jī)上安裝了一個(gè)docker,可以正常使用的,今天突然宿主機(jī)機(jī)器內(nèi)存條壞了,換了內(nèi)存條后啟動(dòng)機(jī)器,再使用 systemctrl start docker 啟動(dòng)docker,最后使用 docker start containID 啟動(dòng)報(bào)錯(cuò) 網(wǎng)上沒(méi)有找到相應(yīng)的描述,仔細(xì)分析看是 write /proc/sys/kernel/shmmni 報(bào)錯(cuò)了,錯(cuò)誤原因是 in

    2024年02月14日
    瀏覽(27)
  • ????網(wǎng)絡(luò)之謎:記一次失敗排查的故事

    ????網(wǎng)絡(luò)之謎:記一次失敗排查的故事

    在這篇文章中,我們將詳細(xì)探討導(dǎo)致故障的可能原因以及解決方案,以便更好地理解故障排查的復(fù)雜性和艱巨性,尤其是當(dāng)出現(xiàn)與本次故障表現(xiàn)相似的問(wèn)題時(shí)。 首先,讓我們回顧一下故障的表現(xiàn)。在客戶(hù)端調(diào)用接口時(shí),發(fā)現(xiàn)一直在轉(zhuǎn)圈等待,而服務(wù)器端卻收到了請(qǐng)求并在返回

    2024年02月05日
    瀏覽(26)
  • 記一次Native memory leak排查過(guò)程

    記一次Native memory leak排查過(guò)程

    路由計(jì)算服務(wù)是路由系統(tǒng)的核心服務(wù),負(fù)責(zé)運(yùn)單路由計(jì)劃的計(jì)算以及實(shí)操與計(jì)劃的匹配。在運(yùn)維過(guò)程中,發(fā)現(xiàn)在長(zhǎng)期不重啟的情況下,有TP99緩慢爬坡的現(xiàn)象。此外,在每周例行調(diào)度的試算過(guò)程中,能明顯看到內(nèi)存的上漲。以下截圖為這兩個(gè)異常情況的監(jiān)控。 TP99爬坡 內(nèi)存爬坡

    2024年02月11日
    瀏覽(26)
  • 記一次Apache HTTP Client問(wèn)題排查

    記一次Apache HTTP Client問(wèn)題排查

    通過(guò)日志查看,存在兩種異常情況。 第一種:開(kāi)始的時(shí)候HTTP請(qǐng)求會(huì)報(bào)超時(shí)異常。 762663363 [2023-07-21 06:04:25] [executor-64] ERROR - com.xxl.CucmTool - CucmTool|sendRisPortSoap error,url:https://xxxxxx/realtimeservice/services/RisPort org.apache.http.conn.HttpHostConnectException: Connect to xxx [/xxx] failed: 連接超時(shí) 第二種

    2024年02月12日
    瀏覽(28)
  • 記一次jedis連接池頑固問(wèn)題排查與修改

    記一次jedis連接池頑固問(wèn)題排查與修改

    這輩子不想再看到j(luò)edisBrokenPipe!! ? 測(cè)試環(huán)境運(yùn)行16天后報(bào)錯(cuò)信息: 05:42:32.629 [http-nio-8093-exec-2] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - [log,175] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is redis.clients.jedis.exceptions.JedisCon

    2023年04月21日
    瀏覽(43)
  • 記一次Elasticsearch GeoIpDownloader的啟動(dòng)異常排查過(guò)程

    最近碰到了Elasticsearch GeoIpDownloader相關(guān)的一個(gè)異常,花費(fèi)了不少精力排查,故此記錄一下,希望碰到同樣問(wèn)題的童鞋們少走彎路。 這個(gè)異常是在Elasticsearch啟動(dòng)的過(guò)程中報(bào)的error,如下所示,從提示信息來(lái)看是因?yàn)镚eoIpDownloader更新數(shù)據(jù)庫(kù)失敗導(dǎo)致。 GeoIpDownloader是用于下載地圖數(shù)

    2024年02月02日
    瀏覽(28)
  • 干貨!記一次接口調(diào)用失敗后的排查思路

    干貨!記一次接口調(diào)用失敗后的排查思路

    特此聲明:以下聊天記錄為老師和學(xué)員的真實(shí)溝通記錄,僅用于做典型技術(shù)問(wèn)題分享,敏感信息已打碼。 VIP學(xué)員可以享受永久答疑服務(wù)。 2023年2月24日,早上剛到公司,有學(xué)員發(fā)來(lái)問(wèn)題 :有個(gè)http接口調(diào)不通 問(wèn)題截圖如下: 這個(gè)接口是需要簽名加密的,現(xiàn)在接口返回code:1,簽

    2024年02月11日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包