簡體   English   中英

Session Apache Ignite 中的寫入超時問題

[英]Session write timeout issue in Apache Ignite

我們正在對 Apache Ignite 進行負載測試。

我們有 1 個 DB 服務器和 1 個 tomcat 的 App 服務器。

兩台機器都有這個設置。

CPU Intel I7
Speed   2.6Ghz
Cores   4
Ram 16GB
Disk 500GB

配置->

App server Java Heap -> Xms512m, Xmx3072m.
DB server Java Heap -> Xms512m, Xmx3072m.
DB server persistence -> true
DB server Offheap Max size -> 3072m.
Write throttling enabled.
Client failure detection timeout set to 10000ms
Failure detection timeout set to 30000ms
Query thread pool size is the default -> 8

情景->

通過 tomcat 應用服務器,我啟動了 500 個線程,這些線程運行業務邏輯來設置和從 Ignite 獲取數據。 在代碼方面,緩存訪問存在信號量鎖定,並且線程通常處於阻塞的 state 中,因為其他線程正在使用這些資源。 運行 3-4 小時后,App 服務器拋出了下面提到的警告。

"org.apache.ignite.logger.java.JavaLogger" "warning" "WARNING" "" "294" "Communication SPI session write timed out (consider increasing 'socketWriteTimeout' configuration property) [remoteAddr=xxxxx/xxxxx:47100, writeTimeout=2000]" "" "" "" "" "" "" "" "" "" "" "" "" "" "ROOT" "{""service"":""xxxx"",""logger_name"":""org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi""}"

在顯示大約 500 毫秒到 1000 毫秒延遲的打印之前,我還看到了很多“可能太長的 JVM”打印。

拋出 execption 后,幾分鍾后,客戶端斷開連接,查詢拋出此錯誤 ->

org.apache.ignite.internal.IgniteClientDisconnectedCheckedException: Query was canceled, client node disconnected.

雖然它運行良好,但我啟用 JProfiler 只是為了查看它在應用服務器 JVM 中的運行情況,並且我可以看到很多線程處於“阻塞”state 中。 而且由於它是 4 核機器,我可以看到一次最多執行 12-15 個應用服務器線程(使用邏輯內核)。 然后退出分析器,讓它運行 2-3 小時,直到發生異常。

雖然在實時中,我們不會產生那么多線程,在生產中,我們將在服務器上擁有 100 多個內核,但了解如何設置可以擴展以滿足需求的部署對我們來說很重要產生許多線程。

有人可以解釋一下嗎?

聽起來像是長時間的 GC 導致客戶端節點分段。 最長的“可能太長 JVM 暫停”消息是什么? 您是否嘗試過增加failureDetectionTimeout 減少客戶端節點的堆大小?

暫無
暫無

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

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