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.

Reply via email to