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

資訊專欄INFORMATION COLUMN

容器打印日志到控制臺阻塞的排障

aaron / 2407人閱讀

摘要:原文今日生產(chǎn)環(huán)境發(fā)現(xiàn)有些容器停止響應(yīng)了,但是容器沒有死,也能正常使用。在容器內(nèi)部使用發(fā)現(xiàn)的一直處于運行狀態(tài)但用沒有發(fā)現(xiàn)有新的日志輸出,且訪問該應(yīng)用肯定會輸出日志的接口也是沒有任何日志輸出,因此懷疑阻塞住了。

原文

今日生產(chǎn)環(huán)境發(fā)現(xiàn)有些容器停止響應(yīng)了,但是容器沒有死,docker exec -it /bin/bash也能正常使用。

在容器內(nèi)部使用jstack 發(fā)現(xiàn)log4j2的Console Appender一直處于運行狀態(tài):

"AsyncAppender-asyncConsole" #21 daemon prio=5 os_prio=0 tid=0x00007fd968d07000 nid=0x1f runnable [0x00007fd91bffd000]
   java.lang.Thread.State: RUNNABLE
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:326)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
    - locked <0x00000000f002b408> (a java.io.BufferedOutputStream)
    at java.io.PrintStream.write(PrintStream.java:480)
    - locked <0x00000000f002b3e8> (a java.io.PrintStream)
    at org.apache.logging.log4j.core.util.CloseShieldOutputStream.write(CloseShieldOutputStream.java:53)
    at org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:262)
    - locked <0x00000000f021d848> (a org.apache.logging.log4j.core.appender.OutputStreamManager)
    at org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:294)
    - locked <0x00000000f021d848> (a org.apache.logging.log4j.core.appender.OutputStreamManager)
    at org.apache.logging.log4j.core.appender.OutputStreamManager.drain(OutputStreamManager.java:351)
    at org.apache.logging.log4j.core.layout.TextEncoderHelper.drainIfByteBufferFull(TextEncoderHelper.java:260)
    - locked <0x00000000f021d848> (a org.apache.logging.log4j.core.appender.OutputStreamManager)
    at org.apache.logging.log4j.core.layout.TextEncoderHelper.writeAndEncodeAsMuchAsPossible(TextEncoderHelper.java:199)
    at org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeChunkedText(TextEncoderHelper.java:159)
    - locked <0x00000000f021d848> (a org.apache.logging.log4j.core.appender.OutputStreamManager)
    at org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeText(TextEncoderHelper.java:58)
    at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:68)
    at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:32)
    at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:220)
    at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:58)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161)
    at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
    at org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.callAppenders(AsyncAppender.java:459)
    at org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.run(AsyncAppender.java:412)

但用docker logs -f 沒有發(fā)現(xiàn)有新的日志輸出,且訪問該應(yīng)用肯定會輸出日志的接口也是沒有任何日志輸出,因此懷疑log4j2阻塞住了。

Google到有人在log4j提出了類似了問題LOG4J2-2239,官方給出的解釋是問題出在log4j2之外。

于是查一下logback是否也有類似問題,找到LOGBACK-1422,同樣給出的解釋是問題出在logback之外。

兩個問題的共通點都是用docker運行,于是把應(yīng)用直接進程方式運行,沒有出現(xiàn)問題。

于是Google搜索docker logging to stdout hangs,找到SO的這個回答,以及這個issue,解決方案將Docker升級到18.06。

查看生產(chǎn)環(huán)境的docker版本是18.03,升級到18.09后問題解決。

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/27700.html

相關(guān)文章

  • 為何把日志打印制臺很慢?

    摘要:原文在容器打印日志到控制臺阻塞的排障的時候看到一個觀點把日志打印到控制臺要比打印到文件慢,而且是非常慢。那么為何輸出到控制臺慢有何辦法加速呢問題要從三個角度來分別回答的角度程序角度容器角度角度寫到控制臺其實就是寫到,更嚴格的說應(yīng)該是。 原文 在容器打印日志到控制臺阻塞的排障的時候看到一個觀點: 把日志打印到控制臺要比打印到文件慢,而且是非常慢。 log4j2和logback的兩個iss...

    dinfer 評論0 收藏0
  • 為何把日志打印制臺很慢?

    摘要:原文在容器打印日志到控制臺阻塞的排障的時候看到一個觀點把日志打印到控制臺要比打印到文件慢,而且是非常慢。那么為何輸出到控制臺慢有何辦法加速呢問題要從三個角度來分別回答的角度程序角度容器角度角度寫到控制臺其實就是寫到,更嚴格的說應(yīng)該是。 原文 在容器打印日志到控制臺阻塞的排障的時候看到一個觀點: 把日志打印到控制臺要比打印到文件慢,而且是非常慢。 log4j2和logback的兩個iss...

    APICloud 評論0 收藏0
  • 容器云 UK8S】常見問題及排障指南:入門必讀之Pod 常見命令,Controller 常見命令和

    摘要:入門必讀提供了一系列的命令行工具來輔助我們調(diào)試和定位問題,本指南列舉一些常見的命令來幫助應(yīng)用管理者快速定位和解決問題。這里以為例,介紹的常用命令其他的命令類型與其一致。入門必讀Kubernetes 提供了一系列的命令行工具來輔助我們調(diào)試和定位問題,本指南列舉一些常見的命令來幫助應(yīng)用管理者快速定位和解決問題。定位問題在開始處理問題之前,我們需要確認問題的類型,是 Pod ,Service ,或...

    Tecode 評論0 收藏0
  • 恕我直言,你可能誤解了微服務(wù)

    摘要:劉超,網(wǎng)易云計算首席架構(gòu)師,有多年的云計算架構(gòu)與開發(fā)經(jīng)歷,積累了豐富的企業(yè)級應(yīng)用的微服務(wù)化,容器化實戰(zhàn)經(jīng)驗。近日,記者對劉超進行了采訪,跟大家分享了微服務(wù)實戰(zhàn)的挑戰(zhàn)和一些常見的微服務(wù)誤解,以及他對微服務(wù)發(fā)展趨勢的判斷。 劉超,網(wǎng)易云計算首席架構(gòu)師,有10多年的云計算架構(gòu)與開發(fā)經(jīng)歷,積累了豐富的企業(yè)級應(yīng)用的微服務(wù)化,容器化實戰(zhàn)經(jīng)驗。劉超將擔任今年 5 月份 QCon 全球軟件開發(fā)大會廣州...

    AlphaGooo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<