簡體   English   中英

由於節點應用程序 node::http2::Http2Session::ConsumeHTTP2Data(),Kubernetes pod 每 10 分鍾崩潰一次

[英]Kubernetes pods are crashing every 10 minutes due to node app, node::http2::Http2Session::ConsumeHTTP2Data()

我有一個用於一個節點應用程序的 kubernetes pods,每個 pods 每 10 分鍾左右崩潰一次,我想了解原因並穩定它。

豆莢: $ k get po | grep app $ k get po | grep app

app-655fd5fcc9-4mtjr                                 0/1     CrashLoopBackOff   53         7h35m
app-655fd5fcc9-6kf82                                 1/1     Running            106        16h
app-655fd5fcc9-9tfbp                                 1/1     Running            87         16h
app-655fd5fcc9-g8x7q                                 1/1     Running            53         7h35m
app-655fd5fcc9-nvcc8                                 1/1     Running            102        16h

崩潰前的日志: $ k logs -p app-655fd5fcc9-4mtjr

node[25]: ../src/node_http2.cc:893:ssize_t node::http2::Http2Session::ConsumeHTTP2Data(): Assertion `(flags_ & SESSION_STATE_READING_STOPPED) != (0)' failed.
 1: 0x8fa0c0 node::Abort() [node]
 2: 0x8fa195  [node]
 3: 0x959e02 node::http2::Http2Session::ConsumeHTTP2Data() [node]
 4: 0x959f4f node::http2::Http2Session::OnStreamRead(long, uv_buf_t const&) [node]
 5: 0xa2aad1 node::TLSWrap::ClearOut() [node]
 6: 0xa2b343 node::TLSWrap::OnStreamRead(long, uv_buf_t const&) [node]
 7: 0x9cf801  [node]
 8: 0xa7ae09  [node]
 9: 0xa7b430  [node]
10: 0xa80dd8  [node]
11: 0xa6fe6b uv_run [node]
12: 0x904725 node::Start(v8::Isolate*, node::IsolateData*, std::vector<std::string, std::allocator<std::string> > const&, std::vector<std::string, std::allocator<std::string> > const&) [node]
13: 0x90297f node::Start(int, char**) [node]
14: 0x7f1a8cbd02e1 __libc_start_main [/lib/x86_64-linux-gnu/libc.so.6]
15: 0x8bbe85  [node]
Aborted (core dumped)
npm ERR! code ELIFECYCLE
npm ERR! errno 134
npm ERR! app@1.0.1 start: `node --harmony ./entry-point.js "--max-old-space-size=7168"`
npm ERR! Exit status 134
npm ERR!
npm ERR! Failed at the app@1.0.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-03-12T00_45_17_556Z-debug.log

我通讀了$ k describe pods app-655fd5fcc9-4mtjr但似乎沒有任何相關的有用信息一目了然。 我認為問題出在應用程序上。

我從哪里開始調試和解決這個問題?

  • 直接在本地運行node entry-point.js一段時間? 這是生產代碼,但有時您必須在本地運行。
  • 我可能會錯過來自 stderr 的其他東西嗎?
  • 有沒有一種簡單的方法可以捕獲這個未處理的錯誤並從 /root/.npm/_logs/2020-03-12T00_45_17_556Z-debug.log 上傳或發送整個日志?
  • 每個 Pod 是內存不足還是受 CPU 限制? 我密切關注 pod $ k exec -it app-655fd5fcc9-6kf82 top當它進入 CrashLoopBackOff 狀態時,資源使用情況似乎很好。

我的應用程序沒有直接使用 node stdlib、 http2 可能有一些 npm 模塊,如@google-cloud模塊或 http 請求客戶端之一。 $ ack http2 --js # no results

畢竟問題出在應用程序上。 我們有舊的遺留代碼,使用輪詢運行帶有深度嵌套回調的函數。 它已被重構以使 func 異步並在吞吐量有限的情況下並行執行所有工作,並將控制器更改為僅等待每個 func 調用。

豆莢每 1-3 小時崩潰一次,而不是每 10 分鍾一次。 可能是應用程序的另一個問題。

不知道它是否對某人有幫助,但對我來說,我使用的是 node v10.16.3v10.16.3了類似的問題,但在移動到v12.14.1它停止彈出。

不確定到底是什么原因。 但是我的應用程序正在一個非常大的數組上運行一個循環,因為我在處理了幾個塊后手動運行了垃圾清理器。 在我的第一次清潔過程后,出現了上述錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM