Does this happens on tip too? There was a recent CL that
modified the code of the nat pool; see

https://go-review.googlesource.com/#/c/30613/

exp. the "Eliminate allocation in divLarge nat pool" part.


Il giorno sabato 15 ottobre 2016 16:28:01 UTC+2, Raffaele Di Fazio ha 
scritto:
>
> Hi, 
> I have a web application that over time uses more and more memory. This is 
> the output of pprof of the heap: 
>
> go tool pprof -alloc_space lushan-server https:
> //localhost:8083/debug/pprof/heap
> Fetching profile from https://localhost:8083/debug/pprof/heap
> Saved profile in /Users/rdifazio/pprof/pprof.lushan-server.localhost:
> 8083.alloc_objects.alloc_space.022.pb.gz
> Entering interactive mode (type "help" for commands)
> (pprof) top
> 43.06MB of 67.07MB total (64.20%)
> Dropped 4 nodes (cum <= 0.34MB)
> Showing top 10 nodes out of 188 (cum >= 1.50MB)
>       flat  flat%   sum%        cum   cum%
>       26MB 38.76% 38.76%       26MB 38.76%  math/big.putNat
>        3MB  4.48% 43.24%     3.50MB  5.22%  encoding/json.(*decodeState).
> objectInterface
>     2.50MB  3.73% 46.97%     2.50MB  3.73%  crypto/tls.(*Conn).write
>        2MB  2.98% 49.96%        2MB  2.98%  crypto/tls.(*block).reserve
>        2MB  2.98% 52.94%    10.50MB 15.66%  encoding/json.Unmarshal
>     1.55MB  2.31% 55.25%     1.55MB  2.31%  regexp.(*bitState).reset
>     1.50MB  2.24% 57.49%     9.50MB 14.17%  github.com/go-openapi/spec.(*
> Schema).UnmarshalJSON
>     1.50MB  2.24% 59.72%    27.50MB 41.00%  math/big.nat.divLarge
>     1.50MB  2.24% 61.96%     5.50MB  8.20%  math/big.nat.expNN
>     1.50MB  2.24% 64.20%     1.50MB  2.24%  crypto/sha512.New384
> (pprof)
>
>
> ROUTINE ======================== math/big.putNat in /usr/local/Cellar/go/
> 1.7.1/libexec/src/math/big/nat.go
>       26MB       26MB (flat, cum) 38.76% of Total
>          .          .    550: }
>          .          .    551: return z.make(n)
>          .          .    552:}
>          .          .    553:
>          .          .    554:func putNat(x nat) {
>       26MB       26MB    555: natPool.Put(x)
>          .          .    556:}
>          .          .    557:
>          .          .    558:var natPool sync.Pool
>          .          .    559:
>          .          .    560:// q = (uIn-r)/v, with 0 <= r < y
>
>
>
> The memory allocated in math/big.putNat seems to increase over time, 
> generating a very high usage of memory for a web applications that is 
> executing very few requests per second. I wonder why and how I can better 
> analyze this issue. Please notice that this happens only when serving 
> HTTPS. 
>
> I'm currently using go 1.7 and the app itself uses the gin web framework. 
>
> Thanks in advance! 
>
> Raffaele 
>

-- 
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