Attaching png: <https://lh3.googleusercontent.com/-3pu5f0Zvebw/WiAKKFjnVnI/AAAAAAAAKG4/hnPspzQzf7ASbvqtTU64rEMPSsZ3G1bzgCLcBGAs/s1600/profile003.png>
On Thursday, 30 November 2017 19:09:04 UTC+5:30, Karan Chaudhary wrote: > > Are you just trying to see how heap allocation can be seen using > debug/pprof? > > Maybe you're allocating too less. Try to allocate exponentialy. > > package main > > import ( > "log" > "net/http" > "time" > > _ "net/http/pprof" > ) > > func expalloc() { > x := make([]int, 0) > for i := 0; i < 10; i++ { > x = append(x, i) > x = append(x, x...) > } > > time.Sleep(10 * time.Second) > } > > func main() { > go func() { > log.Println(http.ListenAndServe("localhost:6060", nil)) > }() > > expalloc() > > } > > Allocations on my machine (reduce 50 to smaller number as the program > might go out of memory): > > > <https://lh3.googleusercontent.com/-FqrfDyq6nRI/WiAJLLceTbI/AAAAAAAAKGw/AhU2-Tb-3dkJ9Wihr4iS7xynMq0r6sQCQCLcBGAs/s1600/profile003.png> > > > > > On Wednesday, 29 November 2017 19:47:11 UTC+5:30, basti skalendudler wrote: >> >> Does noone have an idea? :( >> >> Am Montag, 27. November 2017 13:37:43 UTC+1 schrieb basti skalendudler: >>> >>> The go tool pprof command is interactive, so I thought it is enough type >>> 'png' to get the image after the benchmark is run >>> >>> I tested to start go tool pprof now as well during and after the >>> benchmark -> nothing changes >>> >>> Am Montag, 27. November 2017 04:37:48 UTC+1 schrieb Karan Chaudhary: >>>> >>>> From the top of my head, shouldn't the benchmark be done when traffic >>>> is being sent to the server and not before it is sent? >>>> >>>> On Sunday, 26 November 2017 00:11:40 UTC+5:30, basti skalendudler wrote: >>>>> >>>>> Hey guiys, I posted a StackOF question two days ago, but so far nobody >>>>> was able to help me! >>>>> >>>>> I am trying to profile my web server I wrote, but my pprof does not >>>>> contain any data about the handler func. >>>>> I am using the httprouter package >>>>> <https://github.com/julienschmidt/httprouter> by julienschmidt, and >>>>> want to simply benchmark one of my handlers and see the pprof profile for >>>>> that. For the benchmarking, I am using go-wrk >>>>> <https://github.com/tsliwowicz/go-wrk> >>>>> >>>>> I set up my web server and pprof like this: >>>>> >>>>> >>>>> // Configure the server >>>>> server := &http.Server{ >>>>> Addr: ":4000", >>>>> Handler: router, >>>>> } >>>>> >>>>> >>>>> go func() { >>>>> log.Println(http.ListenAndServe(":6060", nil)) >>>>> }() >>>>> >>>>> >>>>> // Start the server >>>>> err = server.ListenAndServe() >>>>> if err != nil { >>>>> panic(err) >>>>> } >>>>> >>>>> >>>>> The router is initialized like this: >>>>> >>>>> >>>>> // Create the httprouter >>>>> router := httprouter.New() >>>>> // Register all handlers >>>>> router.GET("/entities/:type/map", h.UseHandler(&h. >>>>> ApiGetEntitiesMapRequest{}, p)) >>>>> >>>>> >>>>> And my handler looks like this: >>>>> >>>>> >>>>> func (req ApiGetEntitiesMapRequest) Handle(r *http.Request, hrp >>>>> httprouter.Params, p Params) (interface{}, error) { >>>>> test := make([]string, 0) >>>>> for i := 0; i < 1000; i++ { >>>>> test = append(test, "1") >>>>> test = append(test, "2") >>>>> // Ensure pprof has some time to collect its data >>>>> time.Sleep(10) >>>>> } >>>>> return test, nil >>>>> } >>>>> >>>>> This handler is just a test, where I dynamically append a lot of >>>>> elements to a slice. The reason for that is, I wanted to test whether >>>>> these >>>>> dynamic allocations are represented in the heap profile of pprof. >>>>> >>>>> Now, what I did was: >>>>> >>>>> - Start my server >>>>> - execute **go tool pprof http://localhost:6060/debug/pprof/heap** >>>>> in my terminal >>>>> - then benchmark my handler by executing **go-wrk -no-c -d 5 >>>>> http://localhost:4000/entities/object/map** >>>>> >>>>> The request works and my benchmark also reports everything correctly. >>>>> However, when I type **png** in the pprof terminal, I get this graph: >>>>> >>>>> >>>>> <https://lh3.googleusercontent.com/-H5BlDsvkGc8/WhkpNlbAgBI/AAAAAAAABMQ/MagwiySh4F8G5NvT4V4_uTAnHexw0VqBACLcBGAs/s1600/profile001.png> >>>>> >>>>> >>>>> The graph does not contain any information about my handler and the >>>>> costly heap allocations I did in my handler. What am I doing wrong? >>>>> >>>> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.