2014-10-24 18 views
12

İçinde net/http/pprof kullanılmayan inport olan bir kaç tane program var.pprof import overhead ne kadar büyük?

import _ "net/http/pprof" 
... 
//http.ListenAndServe("127.0.0.1:6060", nil) 

Bu içe aktarmanın yükünün CPU ve Mem açısından ne olduğunu merak ediyordum. Diğer adıyla. O zaman prod'da kaldırmalıyım (evet), ama unutursam etki ne olurdu?

İlgili: Bu ithalatın kesin yan etkileri nelerdir? Bazı http işleyicileri kaydeder, ancak aynı zamanda go 'malloc işlevlerinde şeyler enjekte mi?

cevap

13

Net/http/pprof paketini içe aktarma yükü oldukça sınırlıdır: http sunucusu için yalnızca bazı işleyicileri yükler./Debug/pprof/profile DİNLENME hizmeti olduğunda

CPU profilleme başlatma anda etkin değil

http://golang.org/src/pkg/net/http/pprof/pprof.go

, sadece (varsayılan olarak 30 saniye) bir süre için devreye girer: En kaynak kodunu gör aradı. Dolayısıyla, bu paketle derleme, uygulamanın performansını çok fazla etkilememelidir (http sunucusuna yönelik ekstra goroutinler hariç). Şimdi,/debug/pprof/profile çalıştırılırken, CPU örneklemesi etkinleştirilir, böylece bir performans yükü beklenir. İlgili portun erişiminin uygulamanın yöneticileri ile sınırlı olması koşuluyla üretim kodu için kullanılabileceğini tahmin ediyorum.

+1

CPU örneklemenin ne zaman etkinleştirildiğini, ağır olduğunu ekledim. Yaptığınız gibi "uygulamanızın performansını orijinalden% 1'e düşürecek". Kendimi kazara aktivasyon olasılığından kurtararak kendimi iyi hissederdim. – user918176

+1

@ user918176: Anlamsız. –