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.

Reply via email to