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.

Reply via email to