簡體   English   中英

在Golang 1.4.1中由GC引起的cpu核心是什么

[英]What is the cpu cores caused by GC in Golang 1.4.1

我最近遇到過這樣一種情況:我們的Golang應用程序消耗了近30GB的內存,會定期吃掉所有24個CPU內核幾乎100%。 這將持續超過3秒。 我們的Golang版本在Linux 64位上是1.4.1。

我已經google了一些信息。 這是我的假設:

  • 在我們的應用程序中,我們使用數據類型[]map[string]*list ,此類型的實例將包含超過250K的鍵。
  • 也許golang 1.4.1中的gc消耗更多的CPU時間並阻止世界。 但是,我找不到用於配置gc goroutines(線程)並行性的參數。 並且,它與GOMAXPROCS參數有一些關系GOMAXPROCS

你真的得知道這樣的問題。

這說你可能能夠減少你在垃圾收集器上的負擔。 以下是一些建議:

  1. 鏈接列表會導致大量小額分配。 您是否考慮過使用[]map[string][]whatever_you_are_storing
  2. 你在這個巨大的地圖上添加和刪除東西嗎? 您添加和刪除的內容基本相同嗎? 如果是這樣,您可以使用sync.Pool
  3. 您是否嘗試過直接存儲項目: map[string]list而不是map[string]*list 它會改變你的程序的行為,但對於一個小的結構,它可能是有意義的。

那些是黑暗中的鏡頭。

暫無
暫無

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

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