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

案例分享-full gc導(dǎo)致k8s pod重啟

這篇具有很好參考價值的文章主要介紹了案例分享-full gc導(dǎo)致k8s pod重啟。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

案例分享-full gc導(dǎo)致k8s pod重啟

?在之前的記一次k8s pod頻繁重啟的優(yōu)化之旅中分享過對于pod頻繁重啟的一些案例,最近又遇到一例,繼續(xù)分享出來希望能給大家?guī)硇┰S收獲。

問題現(xiàn)象

報警群里突然顯示某pod頻繁重啟,我隨即上去查看日志,主要分這么幾步:??

1.查看pod重啟的原因,kubectl descirbe pod

Last State:     Terminated
      Reason:       Error
      Exit Code:    137

上面的Reason:Error太寬泛了,不能直觀的知道原因,Exit code:137一般表示程序被?SIGKILL?中斷信號殺死,異常原因可能為:

案例分享-full gc導(dǎo)致k8s pod重啟

?https://cloud.tencent.com/document/product/457/42945

首先排除OOMKilled情況,剩余的就是livenessProbe(存活檢查)失敗。

2.查看pod事件,kubectl descirbe pod,重點(diǎn)關(guān)注輸出的Events部分

Warning  Unhealthy  2m56s (x8 over 7m16s)   kubelet            Liveness probe failed: Get http://10.244.11.136:8080/jc_actuator_1/health: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Normal   Killing    2m56s                   kubelet            Container enterprise-service failed liveness probe, will be restarted

熟悉的健康檢查失?。ǔ瑫r),是什么導(dǎo)致超時呢,繼續(xù)找日志。

3.結(jié)合之前的排查經(jīng)驗(yàn),我認(rèn)為gc的嫌疑最大,所以查看gc日志

貼一部分日志,可以看到Full GC很繁忙,而且每次結(jié)束后內(nèi)存幾乎沒有釋放,應(yīng)用已經(jīng)是處于停擺狀態(tài),接下來要做的就是找出Full GC的兇手。

2023-04-22T14:30:58.772+0000: 574.764: [Full GC (Allocation Failure) 2023-04-22T14:30:58.772+0000: 574.764: [Tenured: 2097151K->2097151K(2097152K), 3.6358812 secs] 2569023K->2568977K(2569024K), [Metaspace: 119379K->119379K(1163264K)], 3.6359987 secs] [Times: user=3.64 sys=0.00, real=3.63 secs] 
2023-04-22T14:31:02.410+0000: 578.402: [Full GC (Allocation Failure) 2023-04-22T14:31:02.410+0000: 578.402: [Tenured: 2097151K->2097151K(2097152K), 3.5875116 secs] 2569023K->2568980K(2569024K), [Metaspace: 119379K->119379K(1163264K)], 3.5876388 secs] [Times: user=3.59 sys=0.00, real=3.59 secs] 
2023-04-22T14:31:05.999+0000: 581.991: [Full GC (Allocation Failure) 2023-04-22T14:31:05.999+0000: 581.991: [Tenured: 2097152K->2097151K(2097152K), 3.5950824 secs] 2569024K->2568987K(2569024K), [Metaspace: 119379K->119379K(1163264K)], 3.5951774 secs] [Times: user=3.59 sys=0.00, real=3.60 secs] 
2023-04-22T14:31:09.596+0000: 585.587: [Full GC (Allocation Failure) 2023-04-22T14:31:09.596+0000: 585.587: [Tenured: 2097151K->2097151K(2097152K), 3.5822343 secs] 2569023K->2568849K(2569024K), [Metaspace: 119379K->119379K(1163264K)], 3.5823244 secs] [Times: user=3.58 sys=0.00, real=3.58 secs] 
2023-04-22T14:31:13.180+0000: 589.172: [Full GC (Allocation Failure) 2023-04-22T14:31:13.180+0000: 589.172: [Tenured: 2097151K->2097151K(2097152K), 3.6316461 secs] 2569020K->2568910K(2569024K), [Metaspace: 119380K->119380K(1163264K)], 3.6317393 secs] [Times: user=3.63 sys=0.00, real=3.64 secs] 
2023-04-22T14:31:16.813+0000: 592.805: [Full GC (Allocation Failure) 2023-04-22T14:31:16.813+0000: 592.805: [Tenured: 2097151K->2097151K(2097152K), 3.6070671 secs] 2569021K->2568907K(2569024K), [Metaspace: 119380K->119380K(1163264K)], 3.6071998 secs] [Times: user=3.60 sys=0.00, real=3.60 secs] 
2023-04-22T14:31:20.425+0000: 596.417: [Full GC (Allocation Failure) 2023-04-22T14:31:20.425+0000: 596.417: [Tenured: 2097151K->2097151K(2097152K), 4.7111087 secs] 2569020K->2568899K(2569024K), [Metaspace: 119381K->119381K(1163264K)], 4.7112440 secs] [Times: user=4.71 sys=0.00, real=4.71 secs] 
2023-04-22T14:31:25.142+0000: 601.133: [Full GC (Allocation Failure) 2023-04-22T14:31:25.142+0000: 601.133: [Tenured: 2097151K->2097151K(2097152K), 3.8752248 secs] 2569023K->2568899K(2569024K), [Metaspace: 119381K->119381K(1163264K)], 3.8753506 secs] [Times: user=3.88 sys=0.01, real=3.87 secs] 
2023-04-22T14:31:29.021+0000: 605.012: [Full GC (Allocation Failure) 2023-04-22T14:31:29.021+0000: 605.012: [Tenured: 2097151K->2097151K(2097152K), 3.5892311 secs] 2569023K->2568910K(2569024K), [Metaspace: 119381K->119381K(1163264K)], 3.5893335 secs] [Times: user=3.59 sys=0.00, real=3.59 secs] 
2023-04-22T14:31:32.612+0000: 608.604: [Full GC (Allocation Failure) 2023-04-22T14:31:32.612+0000: 608.604: [Tenured: 2097151K->2097151K(2097152K), 3.5236182 secs] 2569023K->2568915K(2569024K), [Metaspace: 119381K->119381K(1163264K)], 3.5237085 secs] [Times: user=3.52 sys=0.00, real=3.52 secs] 

背景知識

我們的服務(wù)部署在k8s中,k8s可以對容器執(zhí)行定期的診斷,要執(zhí)行診斷,kubelet 調(diào)用由容器實(shí)現(xiàn)的 Handler (處理程序)。有三種類型的處理程序:

  • ExecAction:在容器內(nèi)執(zhí)行指定命令。如果命令退出時返回碼為 0 則認(rèn)為診斷成功。

  • TCPSocketAction:對容器的 IP 地址上的指定端口執(zhí)行 TCP 檢查。如果端口打開,則診斷被認(rèn)為是成功的。

  • HTTPGetAction:對容器的 IP 地址上指定端口和路徑執(zhí)行 HTTP Get 請求。如果響應(yīng)的狀態(tài)碼大于等于 200 且小于 400,則診斷被認(rèn)為是成功的。

每次探測都將獲得以下三種結(jié)果之一:

  • Success(成功):容器通過了診斷。

  • Failure(失?。喝萜魑赐ㄟ^診斷。

  • Unknown(未知):診斷失敗,因此不會采取任何行動。

針對運(yùn)行中的容器,kubelet 可以選擇是否執(zhí)行以下三種探針,以及如何針對探測結(jié)果作出反應(yīng):

  • livenessProbe:指示容器是否正在運(yùn)行。如果存活態(tài)探測失敗,則 kubelet 會殺死容器, 并且容器將根據(jù)其重啟策略決定未來。如果容器不提供存活探針, 則默認(rèn)狀態(tài)為 Success。

  • readinessProbe:指示容器是否準(zhǔn)備好為請求提供服務(wù)。如果就緒態(tài)探測失敗, 端點(diǎn)控制器將從與 Pod 匹配的所有服務(wù)的端點(diǎn)列表中刪除該 Pod 的 IP 地址。初始延遲之前的就緒態(tài)的狀態(tài)值默認(rèn)為 Failure。如果容器不提供就緒態(tài)探針,則默認(rèn)狀態(tài)為 Success。

  • startupProbe: 指示容器中的應(yīng)用是否已經(jīng)啟動。如果提供了啟動探針,則所有其他探針都會被 禁用,直到此探針成功為止。如果啟動探測失敗,kubelet 將殺死容器,而容器依其?重啟策略進(jìn)行重啟。如果容器沒有提供啟動探測,則默認(rèn)狀態(tài)為 Success。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

以上探針介紹內(nèi)容來源于https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/#container-probes

尋找原因

前面提到是由于Full GC STW導(dǎo)致jvm無法提供服務(wù),那我們就看看是什么導(dǎo)致Full GC,具體的手段就是獲取heap? dump文件,然后分析,什么時機(jī)去獲取呢?

這里采用的辦法是守株待兔,開兩個窗口,一個盯著gc日志,當(dāng)看到有大量Full GC產(chǎn)生時在另一個窗口生成heap dump文件。

接下來通過Eclipse MAT工具分析dump文件

案例分享-full gc導(dǎo)致k8s pod重啟

?原因一目了然,是導(dǎo)出excel導(dǎo)致,涉及的數(shù)據(jù)接近10w條,且列比較多。

分析代碼

大概看了一下導(dǎo)出的代碼,問題集中在以下四點(diǎn):

1.查詢數(shù)據(jù)沒有使用分頁;

2.使用的Apache poi工具本身性能不好,內(nèi)存占用過高;

3.導(dǎo)出沒有限流,對于極度消耗資源的操作必須要控制并發(fā),保護(hù)系統(tǒng);

4.同步導(dǎo)出,用戶等待時間過長時會選擇重試,對系統(tǒng)來講是雪上加霜。

改進(jìn)措施

1.查詢分頁,保證往excel寫數(shù)據(jù)時內(nèi)存中只會有一頁數(shù)據(jù);

2.使用性能更好的工具,如easyexcel;

3.異步導(dǎo)出,控制同時導(dǎo)出的并發(fā)數(shù);

經(jīng)過這三步改造以后,導(dǎo)出導(dǎo)致的Full GC問題得以改善,上線一周再沒有發(fā)現(xiàn)由于大數(shù)據(jù)量的導(dǎo)出導(dǎo)致的pod重啟問題。

推薦閱讀

1.容器服務(wù)pod異常排查

https://cloud.tencent.com/document/product/457/42945

2.通過Exit Code定位 Pod 異常退出原因

https://cloud.tencent.com/document/product/457/43125

3.pod異常問題排查

https://help.aliyun.com/document_detail/412618.html#6

4. easyexcel

http://easyexcel.opensource.alibaba.com/

  

案例分享-full gc導(dǎo)致k8s pod重啟

?文章來源地址http://www.zghlxwxcb.cn/news/detail-433170.html

  

  

?

到了這里,關(guān)于案例分享-full gc導(dǎo)致k8s pod重啟的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • k8s重啟Pod報錯0/4 nodes are available

    當(dāng)您在Kubernetes中使用 kubectl delete pod 命令刪除Pod,并在Pod的定義中指定了nodeSelector時,可能會出現(xiàn)“0/4 nodes are available”的錯誤。這是因?yàn)镵ubernetes調(diào)度程序在找不到符合nodeSelector條件的節(jié)點(diǎn)時,會將Pod設(shè)置為掛起狀態(tài),直到可用節(jié)點(diǎn)出現(xiàn)為止。 要解決這個問題,您可以采取以

    2024年02月16日
    瀏覽(21)
  • k8s中的pod不停的重啟,定位問題原因與解決方法

    k8s中的pod不停的重啟,定位問題原因與解決方法

    現(xiàn)象: running的pod,短時間內(nèi)重啟次數(shù)太多 ? 定位問題方法: 查看pod日志 本次使用以下命令,解決了問題 問題原因: OOM,pod被kill掉,重啟了( 內(nèi)存不夠用 ) ? 查看該服務(wù)的deployment.yaml文件 發(fā)現(xiàn)我們deployment.yaml對服務(wù)的內(nèi)存使用,做了限制 解決方法: 將limit的memory數(shù)值提高,然后

    2024年02月15日
    瀏覽(25)
  • 現(xiàn)場問題排查-k8s(docker)上某服務(wù)pod頻繁自動重啟

    根因:應(yīng)用內(nèi)存占用不合理(個人認(rèn)為)+現(xiàn)場配置內(nèi)存不夠?qū)е骂l繁觸發(fā)OOM引發(fā)該現(xiàn)象。 為啥要寫這個文章? 之前沒有k8s下pod頻繁重啟的問題處理經(jīng)驗(yàn),這次實(shí)戰(zhàn)沉淀思路及過程,供后續(xù)自己處理相同問題提供參考資料 為其他遇到類似問題的人提供一些排查思路 現(xiàn)場反饋

    2024年02月03日
    瀏覽(20)
  • K8S 1.27 新特性 Pod 無需重啟調(diào)整CPU內(nèi)存資源

    如果您已經(jīng)部署了指定 CPU 或 Memory 資源的 Kubernetes pod,可能已經(jīng)注意到更改資源值涉及重新啟動 pod。直到現(xiàn)在,這一直是運(yùn)行工作負(fù)載的破壞性操作。 在 Kubernetes v1.27 中,添加了一個新的 alpha 功能,允許用戶在不重啟容器的情況下調(diào)整分配給 Pod 的 CPU 或 memory 資源的大小。

    2024年02月11日
    瀏覽(27)
  • 驗(yàn)證K8S集群pod之間傳輸速度過慢,導(dǎo)致pod之間業(yè)務(wù)無法正常交互

    原因: K8S部署完成后,但是pod之間無法進(jìn)行交互訪問,導(dǎo)致pod異常 定位思路: 通過啟動兩個busybox容器,之間進(jìn)行scp傳輸文件,驗(yàn)證pod之間tcp連接是否正常 解決方法: 運(yùn)行第一個busybox 拷貝文件至busybox1 進(jìn)入第一個busybox1 進(jìn)入第二個busybox1 結(jié)論: 發(fā)現(xiàn)1K的文件可以相互拷貝

    2024年03月19日
    瀏覽(27)
  • K8S集群中Node節(jié)點(diǎn)資源不足導(dǎo)致Pod無法運(yùn)行的故障排查思路

    故障一:Pod數(shù)量太多超出物理節(jié)點(diǎn)的限制 每一臺Node節(jié)點(diǎn)中默認(rèn)限制最多運(yùn)行110個Pod資源,當(dāng)一個應(yīng)用程序有成百上千的Pod資源時,如果不擴(kuò)容Node節(jié)點(diǎn)或者修改最大Pod數(shù)量限制,那么就會導(dǎo)致部分Pod資源無法正常運(yùn)行,因?yàn)楣?jié)點(diǎn)已經(jīng)沒有資源可以被調(diào)度了。 解決思路就是擴(kuò)容

    2024年02月02日
    瀏覽(30)
  • K8S基本概念+pod生命周期+容器重啟策略+Init容器和邊車容器+pod探針+postStart和preStop

    Kubernetes是谷歌以Borg為前身,基于谷歌15年生產(chǎn)環(huán)境經(jīng)驗(yàn)的基礎(chǔ)上開源的一個項目,Kubernetes致力于提供跨主機(jī)集群的自動部署、擴(kuò)展、高可用以及運(yùn)行應(yīng)用程序容器的平臺。 kube-APIServer:集群的控制中樞,各個模塊之間信息交互都需要經(jīng)過Kube-APIServer,同時它也是集群管理、資

    2024年04月15日
    瀏覽(43)
  • K8S內(nèi)部pod之間相互調(diào)用案例和詳解

    K8S內(nèi)部pod之間相互調(diào)用案例和詳解

    目錄 一、部署nginx容器 二、部署tomcat服務(wù) 三、使用nginx代理tomcat服務(wù) 四、測試 1、service是用于K8S的服務(wù)發(fā)現(xiàn)的重要組件,pod作為運(yùn)行業(yè)務(wù)的承載方式,要想被客戶端訪問或者集群內(nèi)部其它服務(wù)訪問,就需要提供一個訪問入口; ?2、傳統(tǒng)來說ip+端口是普適的訪問方式,但是

    2024年02月03日
    瀏覽(26)
  • 虛擬機(jī)掛起/重啟后導(dǎo)致K8s網(wǎng)絡(luò)不通或服務(wù)啟動后主節(jié)點(diǎn)無法訪問問題

    虛擬機(jī)掛起/重啟后導(dǎo)致K8s網(wǎng)絡(luò)不通或服務(wù)啟動后主節(jié)點(diǎn)無法訪問問題

    3臺linux服務(wù)器搭建的一個?kubeadm-k8s 的集群環(huán)境,(1 Master 2 Worker),? 當(dāng)斷電或者虛擬機(jī)掛起恢復(fù)后出現(xiàn) service 訪問不了,pod之間ping不通或者集群搭建失敗問題,但是K8s集群還是正??梢詣?chuàng)建 deployment 以及調(diào)度 pod 到各個 node 上, 并且 node都處于 ready 的狀態(tài)。 找到其中的?kube

    2024年02月08日
    瀏覽(42)
  • k8s+arm環(huán)境,clickhouse出現(xiàn)多次MEMORY_LIMIT_EXCEEDED導(dǎo)致pod crash

    k8s+arm環(huán)境,clickhouse出現(xiàn)多次MEMORY_LIMIT_EXCEEDED導(dǎo)致pod crash,可能是hugepage干擾內(nèi)存分配器 1、修改文件 2、驗(yàn)證是否關(guān)閉

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包