2017-01-09 3 views
2

Мы разработали сервер, использующий golang, который получит параллельный запрос и обработает запрос (создает большой объект - дерево), а затем отправит ответ. Но объекты не собираются с мусором. Поэтому я решил проанализировать объекты, которые живут в памяти. Начнем с того, что я написал простую программуКак визуализировать heapdump?

package main 

import (
    "fmt" 
    "io/ioutil" 
    "os" 
    "runtime/debug" 
) 

func main() { 
    var i_am_a int = 10 
    _ = i_am_a 
    func() { 
     f, err := os.Create("dump") 
     defer f.Close() 
     if err != nil { 
      panic(err) 
     } 
     debug.WriteHeapDump(f.Fd()) 
    }() 

    b, err := ioutil.ReadFile("dump") 
    if err != nil { 
     panic(err) 
    } 
    fmt.Print(string(b)) 

} 

Но я не мог понять representaion (https://github.com/golang/go/wiki/heapdump13 - это не помогло). Все, что я хотел - это отследить назад из памяти (большой объект) в место (переменная в коде приложения go), которая содержит корневой адрес объекта. Чтобы я мог освободить ссылку и позволить GC собирать ее в своем цикле. Есть ли новый инструмент для визуализации heapdump? или Есть ли лучший подход к этой проблеме?

+0

Может ли эта ссылка помочь вам в анализе Go Go? https://software.intel.com/en-us/blogs/2014/05/10/debugging-performance-issues-in-go-programs –

+0

@JeandeyBoris, я уже пробовал эти трюки. Но никто из них не помогает. Только информация, которая поможет, - это куча кучи, которую я не мог понять. – Spartan

ответ

1

В настоящее время нет окончательного решения проблемы. В newest heap dump format объясняется, что некоторая информация, ранее доступная, больше не отслеживается средой выполнения.

Go Issue 16410 содержит множество подробностей и информацию о незавершенной работе.

Один инструмент - работа в продвижении - что может помочь в goheapdump

-1

Вы можете использовать net/pprof пакет. Просто выполните шаги в https://blog.golang.org/profiling-go-programs, чтобы просмотреть профиль кучи/cpu.

И вы можете использовать go tool pprof binary dumpfile для анализа дампа. Введите web в инструмент интерактивного анализа, вы можете увидеть график вызовов в своем веб-браузере.

Смежные вопросы