Hi all:
I write a simpile HTTP proxy,and find the most alloctions appear in
io.copyBuffer
(pprof) list io.copyBuffer
>
> Total: 2.80TB
>
> ROUTINE ======================== io.copyBuffer in
>> /usr/local/go/src/io/io.go
>
> 1.03TB 2.47TB (flat, cum) 88.16% of Total
>
> . . 383: if wt, ok := src.(WriterTo); ok {
>
> . . 384: return wt.WriteTo(dst)
>
> . . 385: }
>
> . . 386: // Similarly, if the writer has a ReadFrom
>> method, use it to do the copy.
>
> . . 387: if rt, ok := dst.(ReaderFrom); ok {
>
> . 3.02GB 388: return rt.ReadFrom(src)
>
> . . 389: }
>
> . . 390: if buf == nil {
>
> . . 391: size := 32 * 1024
>
> . . 392: if l, ok := src.(*LimitedReader);
>> ok && int64(size) > l.N {
>
> . . 393: if l.N < 1 {
>
> . . 394: size = 1
>
> . . 395: } else {
>
> . . 396: size = int(l.N)
>
> . . 397: }
>
> . . 398: }
>
> 1.03TB 1.03TB 399: buf = make([]byte, size)
>
> . . 400: }
>
> . . 401: for {
>
> . 1.43TB 402: nr, er := src.Read(buf)
>
> . . 403: if nr > 0 {
>
> . 569.57MB 404: nw, ew :=
>> dst.Write(buf[0:nr])
>
> . . 405: if nw > 0 {
>
> . . 406: written +=
>> int64(nw)
>
> . . 407: }
>
> . . 408: if ew != nil {
>
> . . 409: err = ew
>
>
and this the stacktrace
> 0: 0 [2057907: 67433496576] @ 0x470169 0x6e508a 0x6e5042 0x6e4ca7 0x6cf82e
> 0x77bfe9 0x45f7a1
# 0x470168 io.copyBuffer+0x2a8
> /usr/local/go/src/io/io.go:399
# 0x6e5089 io.Copy+0x69
> /usr/local/go/src/io/io.go:364
# 0x6e5041 net/http.(*transferWriter).doBodyCopy+0x21
> /usr/local/go/src/net/http/transfer.go:400
# 0x6e4ca6 net/http.(*transferWriter).writeBody+0x426
> /usr/local/go/src/net/http/transfer.go:348
# 0x6cf82d net/http.(*Response).Write+0x42d
> /usr/local/go/src/net/http/response.go:328
# 0x77bfe8 main.handler+0x318
> /root/ctrip/shendun/main.go:74
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/323a00be-c0dc-4d22-8435-5ea9659b0f9e%40googlegroups.com.