When user refresh the page, the old websocket conn will be closed and a new one created.
I do not understand "If the websocket never disconnects, then the goroutine will pin all memory it is using." The websocekt conn block on read, why will pin all memory? 在 2016年9月6日星期二 UTC+8下午5:22:39,Dave Cheney写道: > > You have 4601 goroutines blocked on reading from the websocket > > goroutine profile: total 4583 > 1526 @ 0x42d77a 0x42806b 0x4277c9 0x67ffb8 0x680024 0x681861 0x6924e0 > 0x5b2e5c 0x5b34bc 0x7bc06d 0x7bc1b6 0x7bd237 0x7a2d94 0x45da11 > # 0x4277c8 net.runtime_pollWait+0x58 > > /usr/lib/go-1.7/src/runtime/netpoll.go:160 > # 0x67ffb7 net.(*pollDesc).wait+0x37 > > /usr/lib/go-1.7/src/net/fd_poll_runtime.go:73 > # 0x680023 net.(*pollDesc).waitRead+0x33 > > /usr/lib/go-1.7/src/net/fd_poll_runtime.go:78 > # 0x681860 net.(*netFD).Read+0x1a0 > > /usr/lib/go-1.7/src/net/fd_unix.go:243 > # 0x6924df net.(*conn).Read+0x6f > > /usr/lib/go-1.7/src/net/net.go:173 > # 0x5b2e5b bufio.(*Reader).fill+0x10b > > /usr/lib/go-1.7/src/bufio/bufio.go:97 > # 0x5b34bb bufio.(*Reader).Read+0x1bb > > /usr/lib/go-1.7/src/bufio/bufio.go:209 > # 0x7bc06c > bitbucket.org/sjtushi/comet/vendor/github.com/gorilla/websocket.(*Conn).readFull+0x8c > > > > If the websocket never disconnects, then the goroutine will pin all memory it > is using. You probably need to add some timeouts to your application. > > > On Tuesday, 6 September 2016 19:14:29 UTC+10, aide...@gmail.com wrote: >> >> I can make sure that the goroutine is exited, because the goroutine count >> is stable but the heap count is always increase. You can see more detail >> pprof from https://comet.shiyanlou.com/debug/pprof/. >> >> >> 在 2016年9月6日星期二 UTC+8下午5:05:05,Dave Cheney写道: >>> >>> Are you sure that goroutines are exiting? You can check this in the >>> /debug/pprof handler. It will tell you how many goroutines are currently >>> running. >>> >>> On Tuesday, 6 September 2016 18:49:29 UTC+10, aide...@gmail.com wrote: >>>> >>>> I think >>>> https://gist.github.com/aiden0z/b8cf00953e81f778bd584fa2ff7eaae7#file-server-go-L268 >>>> error >>>> is not the core problem. The error is ignored because the >>>> go-socket.io no error returned, see >>>> https://github.com/googollee/go-socket.io/blob/master/server.go#L91. >>>> >>>> go 1.6 and 1.7 I have tried, the problem still stands. >>>> >>>> >>>> 在 2016年9月6日星期二 UTC+8下午4:25:40,Dave Cheney写道: >>>>> >>>>> This error handling looks wrong, >>>>> >>>>> >>>>> https://gist.github.com/aiden0z/b8cf00953e81f778bd584fa2ff7eaae7#file-server-go-L268 >>>>> >>>>> Any error from socketio is ignored, and the method always succeeds >>>>> unconditionally. >>>>> >>>>> Also, which version of Go are you using ? >>>>> >>>>> On Tuesday, 6 September 2016 18:07:42 UTC+10, aide...@gmail.com wrote: >>>>>> >>>>>> I have restart the the websocket service, and collect new callgraph. >>>>>> >>>>>> 1. in-use heap callgraph >>>>>> >>>>>> >>>>>> <https://lh3.googleusercontent.com/-mOinFHs1gmM/V854u84GSMI/AAAAAAAAAFI/Dz7zJN6hobsrhRDBTfE__iR-AXp-rpxkACLcB/s1600/comet_inuse_heap.png> >>>>>> >>>>>> 2. heap alloc callgraph >>>>>> >>>>>> >>>>>> <https://lh3.googleusercontent.com/-zriittHlglE/V8542kygEqI/AAAAAAAAAFM/BojzIQ73zy0XbkrNeU4LX7dUAjC6T0ipQCLcB/s1600/comet_alloc_heap.png> >>>>>> >>>>>> >>>>>> >>>>>> 3. source code, pls see gist >>>>>> https://gist.github.com/aiden0z/b8cf00953e81f778bd584fa2ff7eaae7 >>>>>> >>>>>> >>>>>> >>>>>> 在 2016年9月6日星期二 UTC+8下午3:42:06,Dave Cheney写道: >>>>>>> >>>>>>> Are you sure that goroutines are exiting? You can check this in the >>>>>>> /debug/pprof handler. It will tell you how many goroutines are >>>>>>> currently >>>>>>> running. >>>>>> >>>>>> -- 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.