Comments (13)
Ok, I think this is a memory leak
diff --git a/nbhttp/websocket/upgrader.go b/nbhttp/websocket/upgrader.go
index aa682bb..9facc7c 100644
--- a/nbhttp/websocket/upgrader.go
+++ b/nbhttp/websocket/upgrader.go
@@ -447,6 +455,7 @@ func (u *Upgrader) handleMessage(p *nbhttp.Parser, opcode MessageType, body []by
p.Execute(func() {
u.handleWsMessage(u.conn, opcode, body)
+ mempool.Free(body)
})
}
from nbio.
It's not a memory leak.
Try to set ReleaseWebsocketPayload = true
:
https://github.com/lesismal/nbio/blob/master/examples/websocket_1m/server/server.go#L48
That will release the buffer:
https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L127
https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L139
For HTTP, we can release the Body after the Handler is done because it's one-request-one-response:
https://github.com/lesismal/nbio/blob/master/nbhttp/processor.go#L254
https://github.com/lesismal/nbio/blob/master/nbhttp/processor.go#L265
https://github.com/lesismal/nbio/blob/master/nbhttp/processor.go#L52
But For Websocket, the user may hold the data and handle it in another goroutine, if we release the buffer afther the Handler is done, the buffer may be Re-Get by other goroutine and be dirty:
u.OnMessage(func(c *websocket.Conn, messageType websocket.MessageType, data []byte) {
go func() {
// do something
c.WriteMessage(messageType, data)
}()
})
So we use this configurable field ReleaseWebsocketPayload
, let the user decide whether to release it automatically after the Handler is done.
from nbio.
Ok, I think this is a memory leak
diff --git a/nbhttp/websocket/upgrader.go b/nbhttp/websocket/upgrader.go index aa682bb..9facc7c 100644 --- a/nbhttp/websocket/upgrader.go +++ b/nbhttp/websocket/upgrader.go @@ -447,6 +455,7 @@ func (u *Upgrader) handleMessage(p *nbhttp.Parser, opcode MessageType, body []by p.Execute(func() { u.handleWsMessage(u.conn, opcode, body) + mempool.Free(body) }) }
Try to set
ReleaseWebsocketPayload = true
: https://github.com/lesismal/nbio/blob/master/examples/websocket_1m/server/server.go#L48That will release the buffer: https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L127 https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L139
For HTTP, we can release the Body after the Handler is done because it's one-request-one-response. But For Websocket, the user may hold the data and handle it in another goroutine, if we release the buffer afther the Handler is done, the buffer may be Re-Get by other goroutine and be dirty:
u.OnMessage(func(c *websocket.Conn, messageType websocket.MessageType, data []byte) { go func() { // do something c.WriteMessage(messageType, data) }() })So we use this configurable field
ReleaseWebsocketPayload
, let the user decide whether to release it automatically after the Handler is done.
It's not a memory leak and it seems there's no difference between the readAppend
/messageAppend
and the previous code, so we don't need to merge https://github.com/lesismal/nbio/pull/114/files.
But your issue reminds me that we don't release the Ping/Pong/Close
messages' buffer:
https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L100
https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L107
https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L114
https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L464
Although it matters little for the release of Ping/Pong/Close
's buffer, we should add release logic for them like this:
https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L126
at here:
https://github.com/lesismal/nbio/blob/master/nbhttp/websocket/upgrader.go#L464
from nbio.
If we use time.AfterFunc in the message handler and hold the buffer, it will execute in another goroutine, then we should not set ReleaseWebsocketPayload=true
, but we can release the buffer like this:
u.OnMessage(func(c *websocket.Conn, messageType websocket.MessageType, data []byte) {
// echo
time.AfterFunc(time.Second, func() {
c.WriteMessage(messageType, data)
mempool.Free(data)
})
}
from nbio.
ok, thanks. That seemed to have corrected half of my high memory usage. After running a lot of data through and then stopping the clients and waiting a while, I still see 3+ GBs held within the connection
from nbio.
When I set the TLSAllocator to the mempool.NativeAllocator and push through a lot of data, I don't see memory growth growing endlessly as I do when I use the DefaultAllocator. There seems to be leak in the TLS connection code.
from nbio.
Are they the sample you use for testing?
https://github.com/lesismal/nbio/blob/large-message-flood/examples/websocket/server/server.go
https://github.com/lesismal/nbio/blob/large-message-flood/examples/websocket/nbioclient/client.go
from nbio.
No sorry, haven't gotten back to using the examples yet. Would need to add TLS, but should be the same otherwise.
from nbio.
from nbio.
nbio is for general scenarios, and specific optimizations can be made for specific scenarios.
Please provide me the samples, I'll look into it.
from nbio.
I tried some test, did not found that huge memory cost:
ENV
root@ubuntu:~/dev/gopath/src/github.com# go version
go version go1.16.6 linux/amd64
root@ubuntu:~/dev/gopath/src/github.com# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
root@ubuntu:~/dev/gopath/src/github.com# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
Server Cost
root@ubuntu:~/dev/gopath/src/github.com/lesismal/nbio# top -d 1 | grep server
44371 root 20 0 2470128 212804 6416 R 338.9 2.6 0:32.11 server
44371 root 20 0 2470128 237756 6416 S 381.4 2.9 0:36.00 server
44371 root 20 0 2470128 238044 6416 R 378.4 2.9 0:39.86 server
44371 root 20 0 2470128 237676 6416 S 371.8 2.9 0:43.69 server
44371 root 20 0 2470128 237396 6416 R 379.2 2.9 0:47.52 server
44371 root 20 0 2470128 229720 6416 S 373.5 2.8 0:51.33 server
44371 root 20 0 2470128 229492 6416 R 373.5 2.8 0:55.14 server
44371 root 20 0 2470128 216920 6416 S 372.8 2.7 0:58.98 server
44371 root 20 0 2412.2m 229.5m 6.3m R 379.7 2.9 1:01.79 server
44371 root 20 0 2412.2m 225.8m 6.3m S 377.5 2.8 1:05.64 server
44371 root 20 0 2412.2m 222.8m 6.3m S 372.8 2.8 1:09.48 server
44371 root 20 0 2412.2m 222.7m 6.3m S 371.8 2.8 1:13.31 server
44371 root 20 0 2412.2m 237.4m 6.3m S 370.9 3.0 1:17.13 server
44371 root 20 0 2412.2m 237.2m 6.3m R 379.4 3.0 1:21.00 server
44371 root 20 0 2412.2m 236.9m 6.3m S 373.1 3.0 1:24.88 server
44371 root 20 0 2412.2m 236.6m 6.3m S 372.5 3.0 1:28.68 server
44371 root 20 0 2412.2m 236.1m 6.3m S 381.4 3.0 1:32.57 server
44371 root 20 0 2412.2m 213.9m 6.3m S 367.3 2.7 1:36.39 server
44371 root 20 0 2412.2m 237.6m 6.3m R 381.2 3.0 1:40.24 server
44371 root 20 0 2412.2m 207.7m 6.3m R 367.3 2.6 1:44.06 server
44371 root 20 0 2412.2m 233.6m 6.3m R 378.2 2.9 1:47.88 server
44371 root 20 0 2412.2m 207.8m 6.3m R 373.8 2.6 1:51.73 server
44371 root 20 0 2412.2m 222.5m 6.3m S 369.6 2.8 1:55.50 server
44371 root 20 0 2412.2m 222.7m 6.3m S 371.3 2.8 1:59.25 server
44371 root 20 0 2412.2m 195.9m 6.3m S 202.0 2.5 2:01.31 server
44371 root 20 0 2412.2m 186.7m 6.3m S 186.0 2.3 2:03.17 server
44371 root 20 0 2412.2m 196.6m 6.3m S 363.1 2.5 2:06.91 server
44371 root 20 0 2412.2m 210.1m 6.3m S 364.7 2.6 2:10.63 server
44371 root 20 0 2412.2m 210.1m 6.3m R 360.2 2.6 2:14.34 server
44371 root 20 0 2412.2m 225.5m 6.3m R 371.8 2.8 2:18.17 server
44371 root 20 0 2412.2m 240.6m 6.3m S 370.9 3.0 2:21.99 server
44371 root 20 0 2412.2m 240.5m 6.3m S 367.6 3.0 2:25.74 server
44371 root 20 0 2412.2m 240.1m 6.3m S 368.9 3.0 2:29.54 server
44371 root 20 0 2412.2m 198.0m 6.3m R 365.7 2.5 2:33.27 server
44371 root 20 0 2412.2m 180.2m 6.3m S 165.3 2.3 2:34.94 server
44371 root 20 0 2412.2m 213.1m 6.3m S 195.0 2.7 2:36.91 server
44371 root 20 0 2412.2m 230.1m 6.3m R 370.3 2.9 2:40.65 server
44371 root 20 0 2412.2m 230.6m 6.3m R 362.7 2.9 2:44.35 server
44371 root 20 0 2412.2m 244.1m 6.3m R 364.7 3.1 2:48.07 server
44371 root 20 0 2478.3m 259.4m 6.3m S 376.2 3.3 2:51.87 server
44371 root 20 0 2478.3m 263.2m 6.3m S 364.1 3.3 2:55.62 server
44371 root 20 0 2478.3m 262.9m 6.3m S 375.5 3.3 2:59.45 server
44371 root 20 0 2478.3m 262.8m 6.3m R 376.5 3.3 3:03.29 server
44371 root 20 0 2478.3m 262.3m 6.3m S 365.4 3.3 3:07.09 server
44371 root 20 0 2478.3m 214.3m 6.3m S 370.6 2.7 3:10.87 server
44371 root 20 0 2478.3m 215.7m 6.3m R 381.2 2.7 3:14.72 server
44371 root 20 0 2478.3m 243.1m 6.3m S 366.3 3.1 3:18.53 server
44371 root 20 0 2478.3m 234.3m 6.3m S 254.9 2.9 3:21.13 server
44371 root 20 0 2478.3m 202.7m 6.3m S 188.0 2.5 3:23.01 server
44371 root 20 0 2478.3m 240.6m 6.3m S 365.0 3.0 3:26.77 server
44371 root 20 0 2478.3m 240.6m 6.3m R 370.3 3.0 3:30.51 server
44371 root 20 0 2478.3m 258.7m 6.3m S 372.3 3.3 3:34.27 server
44371 root 20 0 2478.3m 273.8m 6.3m R 365.0 3.4 3:38.03 server
44371 root 20 0 2478.3m 273.5m 6.3m R 377.2 3.4 3:41.84 server
44371 root 20 0 2478.3m 273.3m 6.3m R 372.5 3.4 3:45.64 server
44371 root 20 0 2478.3m 272.9m 6.3m S 380.2 3.4 3:49.48 server
44371 root 20 0 2478.3m 260.5m 6.3m R 368.6 3.3 3:53.24 server
44371 root 20 0 2478.3m 260.1m 6.3m S 366.7 3.3 3:56.98 server
44371 root 20 0 2478.3m 259.7m 6.3m S 370.3 3.3 4:00.72 server
44371 root 20 0 2478.3m 259.3m 6.3m R 373.8 3.3 4:04.57 server
44371 root 20 0 2478.3m 258.9m 6.3m S 370.9 3.3 4:08.39 server
44371 root 20 0 2478.3m 246.6m 6.3m R 367.0 3.1 4:12.17 server
44371 root 20 0 2478.3m 224.1m 6.3m S 380.2 2.8 4:16.01 server
44371 root 20 0 2478.3m 226.2m 6.3m S 357.7 2.8 4:19.73 server
44371 root 20 0 2478.3m 226.7m 6.3m S 366.7 2.8 4:23.47 server
44371 root 20 0 2478.3m 226.6m 6.3m R 364.7 2.8 4:27.19 server
44371 root 20 0 2478.3m 226.3m 6.3m S 374.5 2.8 4:31.01 server
44371 root 20 0 2478.3m 277.8m 6.3m R 367.6 3.5 4:34.76 server
44371 root 20 0 2478.3m 278.9m 6.3m S 374.8 3.5 4:38.62 server
44371 root 20 0 2478.3m 244.6m 6.3m S 360.6 3.1 4:42.37 server
44371 root 20 0 2478.3m 238.5m 6.3m S 370.3 3.0 4:46.11 server
44371 root 20 0 2478.3m 250.8m 6.3m S 353.4 3.2 4:49.75 server
44371 root 20 0 2478.3m 236.8m 6.3m R 367.3 3.0 4:53.46 server
44371 root 20 0 2478.3m 229.4m 6.3m R 360.2 2.9 4:57.17 server
44371 root 20 0 2478.3m 259.2m 6.3m R 368.6 3.3 5:00.93 server
44371 root 20 0 2478.3m 266.6m 6.3m R 360.2 3.4 5:04.64 server
44371 root 20 0 2478.3m 266.5m 6.3m S 360.4 3.4 5:08.28 server
44371 root 20 0 2478.3m 266.2m 6.3m R 364.4 3.3 5:11.96 server
44371 root 20 0 2478.3m 271.0m 6.3m R 355.9 3.4 5:15.59 server
44371 root 20 0 2478.3m 271.0m 6.3m S 365.3 3.4 5:19.28 server
44371 root 20 0 2478.3m 256.4m 6.3m R 367.0 3.2 5:23.06 server
44371 root 20 0 2478.3m 252.7m 6.3m S 368.3 3.2 5:26.78 server
44371 root 20 0 2478.3m 237.7m 6.3m S 359.8 3.0 5:30.45 server
44371 root 20 0 2478.3m 249.0m 6.3m R 363.4 3.1 5:34.12 server
44371 root 20 0 2478.3m 248.9m 6.3m S 364.7 3.1 5:37.84 server
44371 root 20 0 2478.3m 248.6m 6.3m S 358.8 3.1 5:41.50 server
44371 root 20 0 2478.3m 248.3m 6.3m S 370.9 3.1 5:45.32 server
44371 root 20 0 2478.3m 247.8m 6.3m S 353.4 3.1 5:48.96 server
44371 root 20 0 2478.3m 247.5m 6.3m R 358.8 3.1 5:52.62 server
44371 root 20 0 2478.3m 272.5m 6.3m S 368.3 3.4 5:56.34 server
44371 root 20 0 2478.3m 273.1m 6.3m R 364.1 3.4 6:00.09 server
44371 root 20 0 2478.3m 270.5m 6.3m S 359.8 3.4 6:03.76 server
44371 root 20 0 2478.3m 270.2m 6.3m S 359.8 3.4 6:07.43 server
44371 root 20 0 2478.3m 269.8m 6.3m S 360.8 3.4 6:11.11 server
44371 root 20 0 2478.3m 269.4m 6.3m S 362.7 3.4 6:14.81 server
44371 root 20 0 2478.3m 269.0m 6.3m R 361.8 3.4 6:18.50 server
44371 root 20 0 2478.3m 262.6m 6.3m S 359.8 3.3 6:22.17 server
44371 root 20 0 2478.3m 262.2m 6.3m S 359.2 3.3 6:25.87 server
44371 root 20 0 2478.3m 267.7m 6.3m S 362.7 3.4 6:29.57 server
44371 root 20 0 2478.3m 268.0m 6.3m R 353.4 3.4 6:33.21 server
44371 root 20 0 2478.3m 267.6m 6.3m S 366.7 3.4 6:36.95 server
44371 root 20 0 2478.3m 267.2m 6.3m R 367.0 3.4 6:40.73 server
44371 root 20 0 2478.3m 270.2m 6.3m R 366.7 3.4 6:44.47 server
44371 root 20 0 2478.3m 269.9m 6.3m S 362.1 3.4 6:48.20 server
44371 root 20 0 2478.3m 269.5m 6.3m S 370.3 3.4 6:51.94 server
44371 root 20 0 2478.3m 269.1m 6.3m S 368.9 3.4 6:55.74 server
44371 root 20 0 2478.3m 256.7m 6.3m S 361.2 3.2 6:59.46 server
44371 root 20 0 2478.3m 236.2m 6.3m S 364.1 3.0 7:03.21 server
44371 root 20 0 2478.3m 237.2m 6.3m R 362.7 3.0 7:06.91 server
44371 root 20 0 2478.3m 236.8m 6.3m R 365.7 3.0 7:10.64 server
44371 root 20 0 2478.3m 198.7m 6.3m S 363.4 2.5 7:14.31 server
44371 root 20 0 2478.3m 229.5m 6.3m R 376.5 2.9 7:18.15 server
44371 root 20 0 2478.3m 229.2m 6.3m S 351.5 2.9 7:21.77 server
44371 root 20 0 2478.3m 228.8m 6.3m S 361.8 2.9 7:25.46 server
44371 root 20 0 2478.3m 211.7m 6.3m S 368.6 2.7 7:29.22 server
44371 root 20 0 2478.3m 228.6m 6.3m R 367.6 2.9 7:32.97 server
44371 root 20 0 2478.3m 263.0m 6.3m S 367.3 3.3 7:36.68 server
44371 root 20 0 2478.3m 292.7m 6.3m R 362.7 3.7 7:40.38 server
44371 root 20 0 2478.3m 292.3m 6.3m R 370.3 3.7 7:44.12 server
44371 root 20 0 2478.3m 291.9m 6.3m R 370.6 3.7 7:47.90 server
44371 root 20 0 2478.3m 291.4m 6.3m R 373.8 3.7 7:51.75 server
44371 root 20 0 2478.3m 253.2m 6.3m S 357.3 3.2 7:55.43 server
44371 root 20 0 2478.3m 250.4m 6.3m S 364.7 3.1 7:59.15 server
44371 root 20 0 2478.3m 250.2m 6.3m R 360.2 3.1 8:02.86 server
44371 root 20 0 2478.3m 249.8m 6.3m R 366.0 3.1 8:06.63 server
44371 root 20 0 2478.3m 249.4m 6.3m S 360.4 3.1 8:10.27 server
44371 root 20 0 2478.3m 233.2m 6.3m R 357.8 2.9 8:13.92 server
44371 root 20 0 2478.3m 207.1m 6.3m S 366.3 2.6 8:17.62 server
44371 root 20 0 2478.3m 219.0m 6.3m S 357.4 2.8 8:21.23 server
44371 root 20 0 2478.3m 224.5m 6.3m R 355.9 2.8 8:24.86 server
44371 root 20 0 2478.3m 232.7m 6.3m S 370.3 2.9 8:28.60 server
44371 root 20 0 2478.3m 251.1m 6.3m S 360.2 3.2 8:32.31 server
44371 root 20 0 2478.3m 251.8m 6.3m R 373.3 3.2 8:36.08 server
44371 root 20 0 2478.3m 271.1m 6.3m S 363.7 3.4 8:39.79 server
44371 root 20 0 2478.3m 271.4m 6.3m S 368.3 3.4 8:43.51 server
44371 root 20 0 2478.3m 217.2m 6.3m S 371.6 2.7 8:47.30 server
44371 root 20 0 2478.3m 209.2m 6.3m R 363.1 2.6 8:51.04 server
44371 root 20 0 2478.3m 237.4m 6.3m S 364.7 3.0 8:54.76 server
44371 root 20 0 2478.3m 248.2m 6.3m R 371.3 3.1 8:58.51 server
44371 root 20 0 2478.3m 256.2m 6.3m R 367.6 3.2 9:02.26 server
44371 root 20 0 2478.3m 256.0m 6.3m S 365.0 3.2 9:06.02 server
44371 root 20 0 2478.3m 255.7m 6.3m S 373.5 3.2 9:09.83 server
44371 root 20 0 2478.3m 255.3m 6.3m S 369.6 3.2 9:13.60 server
44371 root 20 0 2478.3m 227.2m 6.3m S 369.6 2.9 9:17.37 server
44371 root 20 0 2478.3m 246.0m 6.3m S 368.6 3.1 9:21.13 server
44371 root 20 0 2478.3m 246.0m 6.3m R 373.3 3.1 9:24.90 server
44371 root 20 0 2478.3m 247.8m 6.3m S 357.8 3.1 9:28.55 server
44371 root 20 0 2478.3m 247.6m 6.3m S 364.7 3.1 9:32.27 server
44371 root 20 0 2478.3m 247.3m 6.3m S 369.3 3.1 9:36.00 server
44371 root 20 0 2478.3m 230.9m 6.3m S 356.9 2.9 9:39.64 server
44371 root 20 0 2478.3m 230.6m 6.3m S 371.6 2.9 9:43.43 server
44371 root 20 0 2478.3m 236.6m 6.3m R 365.3 3.0 9:47.12 server
44371 root 20 0 2478.3m 244.8m 6.3m R 364.7 3.1 9:50.84 server
44371 root 20 0 2478.3m 244.6m 6.3m R 375.2 3.1 9:54.63 server
44371 root 20 0 2478.3m 263.1m 6.3m R 370.6 3.3 9:58.41 server
44371 root 20 0 2478.3m 265.1m 6.3m S 357.7 3.3 10:02.13 server
44371 root 20 0 2478.3m 247.3m 6.3m R 367.3 3.1 10:05.84 server
44371 root 20 0 2478.3m 241.3m 6.3m R 369.3 3.0 10:09.57 server
44371 root 20 0 2478.3m 241.7m 6.3m S 350.5 3.0 10:13.18 server
44371 root 20 0 2478.3m 241.4m 6.3m R 365.3 3.0 10:16.87 server
44371 root 20 0 2550.3m 224.2m 6.3m S 370.6 2.8 10:20.65 server
44371 root 20 0 2550.3m 251.8m 6.3m S 357.7 3.2 10:24.37 server
44371 root 20 0 2550.3m 251.8m 6.3m S 362.1 3.2 10:28.10 server
44371 root 20 0 2550.3m 257.6m 6.3m S 365.7 3.2 10:31.83 server
44371 root 20 0 2550.3m 257.3m 6.3m S 364.7 3.2 10:35.55 server
44371 root 20 0 2550.3m 229.1m 6.3m S 365.0 2.9 10:39.31 server
44371 root 20 0 2550.3m 211.2m 6.3m S 360.8 2.7 10:42.99 server
44371 root 20 0 2550.3m 241.1m 6.3m S 367.3 3.0 10:46.81 server
44371 root 20 0 2550.3m 246.0m 6.3m S 365.0 3.1 10:50.57 server
44371 root 20 0 2550.3m 253.1m 6.3m S 375.2 3.2 10:54.36 server
44371 root 20 0 2550.3m 227.1m 6.3m S 366.7 2.9 10:58.10 server
44371 root 20 0 2550.3m 202.1m 6.3m S 360.8 2.5 11:01.78 server
44371 root 20 0 2550.3m 212.7m 6.3m S 368.9 2.7 11:05.58 server
44371 root 20 0 2550.3m 274.1m 6.3m S 369.9 3.4 11:09.39 server
44371 root 20 0 2550.3m 274.0m 6.3m S 368.6 3.4 11:13.15 server
44371 root 20 0 2550.3m 273.8m 6.3m S 369.6 3.4 11:16.92 server
44371 root 20 0 2550.3m 273.5m 6.3m S 370.6 3.4 11:20.70 server
44371 root 20 0 2550.3m 265.1m 6.3m S 371.6 3.3 11:24.49 server
44371 root 20 0 2550.3m 258.8m 6.3m S 369.9 3.3 11:28.30 server
44371 root 20 0 2550.3m 258.5m 6.3m S 367.6 3.2 11:32.05 server
44371 root 20 0 2550.3m 258.1m 6.3m S 371.6 3.2 11:35.84 server
44371 root 20 0 2550.3m 257.7m 6.3m S 364.7 3.2 11:39.56 server
44371 root 20 0 2550.3m 257.3m 6.3m S 373.3 3.2 11:43.33 server
44371 root 20 0 2550.3m 215.1m 6.3m S 366.7 2.7 11:47.07 server
44371 root 20 0 2550.3m 232.4m 6.3m S 375.2 2.9 11:50.86 server
44371 root 20 0 2550.3m 214.4m 6.3m S 365.0 2.7 11:54.62 server
44371 root 20 0 2550.3m 229.8m 6.3m S 374.5 2.9 11:58.44 server
44371 root 20 0 2550.3m 226.7m 6.3m S 377.2 2.8 12:02.25 server
44371 root 20 0 2550.3m 225.3m 6.3m S 367.6 2.8 12:06.00 server
44371 root 20 0 2550.3m 232.9m 6.3m S 372.8 2.9 12:09.84 server
44371 root 20 0 2550.3m 266.4m 6.3m S 376.5 3.4 12:13.68 server
44371 root 20 0 2550.3m 266.3m 6.3m S 365.0 3.3 12:17.44 server
44371 root 20 0 2550.3m 265.9m 6.3m S 365.7 3.3 12:21.17 server
44371 root 20 0 2550.3m 265.5m 6.3m S 371.3 3.3 12:24.92 server
44371 root 20 0 2550.3m 257.1m 6.3m S 369.6 3.2 12:28.69 server
44371 root 20 0 2550.3m 246.1m 6.3m S 376.7 3.1 12:32.57 server
44371 root 20 0 2550.3m 246.1m 6.3m S 368.6 3.1 12:36.33 server
44371 root 20 0 2550.3m 245.9m 6.3m S 375.5 3.1 12:40.16 server
44371 root 20 0 2550.3m 245.4m 6.3m S 372.5 3.1 12:43.96 server
44371 root 20 0 2550.3m 272.0m 6.3m S 377.5 3.4 12:47.81 server
44371 root 20 0 2550.3m 271.5m 6.3m S 366.0 3.4 12:51.58 server
44371 root 20 0 2550.3m 269.1m 6.3m S 387.3 3.4 12:55.53 server
44371 root 20 0 2550.3m 233.0m 6.3m S 361.2 2.9 12:59.25 server
44371 root 20 0 2550.3m 232.6m 6.3m S 380.4 2.9 13:03.13 server
44371 root 20 0 2550.3m 248.6m 6.3m S 372.5 3.1 13:06.93 server
44371 root 20 0 2550.3m 248.5m 6.3m S 379.4 3.1 13:10.80 server
44371 root 20 0 2550.3m 229.5m 6.3m S 72.8 2.9 13:11.55 server
44371 root 20 0 2550.3m 219.1m 6.3m S 27.0 2.8 13:11.82 server
44371 root 20 0 2550.3m 223.6m 6.3m S 372.5 2.8 13:15.62 server
44371 root 20 0 2550.3m 223.5m 6.3m S 373.8 2.8 13:19.47 server
44371 root 20 0 2550.3m 226.6m 6.3m S 365.7 2.8 13:23.20 server
44371 root 20 0 2550.3m 231.3m 6.3m S 370.9 2.9 13:27.02 server
44371 root 20 0 2550.3m 235.7m 6.3m S 365.0 3.0 13:30.78 server
44371 root 20 0 2550.3m 235.3m 6.3m S 372.3 3.0 13:34.54 server
44371 root 20 0 2550.3m 209.2m 6.3m S 383.3 2.6 13:38.45 server
44371 root 20 0 2550.3m 240.0m 6.3m S 375.5 3.0 13:42.28 server
44371 root 20 0 2550.3m 261.5m 6.3m S 370.6 3.3 13:46.06 server
44371 root 20 0 2550.3m 261.7m 6.3m S 380.2 3.3 13:49.90 server
44371 root 20 0 2550.3m 261.3m 6.3m S 368.6 3.3 13:53.66 server
44371 root 20 0 2550.3m 199.2m 6.3m S 381.4 2.5 13:57.55 server
44371 root 20 0 2550.3m 244.6m 6.3m S 368.9 3.1 14:01.35 server
44371 root 20 0 2550.3m 244.8m 6.3m S 369.6 3.1 14:05.12 server
44371 root 20 0 2550.3m 244.6m 6.3m S 370.6 3.1 14:08.90 server
44371 root 20 0 2550.3m 244.2m 6.3m S 373.5 3.1 14:12.71 server
44371 root 20 0 2550.3m 243.3m 6.3m S 311.9 3.1 14:15.86 server
Client Cost
root@ubuntu:~/dev/gopath/src/github.com# top -d 1 | grep client
44489 root 20 0 2470024 187260 6280 S 331.6 2.3 0:42.69 client
44489 root 20 0 2470024 187796 6280 S 352.4 2.3 0:46.32 client
44489 root 20 0 2470024 210584 6280 S 351.0 2.6 0:49.90 client
44489 root 20 0 2412.1m 205.6m 6.1m R 347.4 2.6 0:52.54 client
44489 root 20 0 2412.1m 205.3m 6.1m R 357.8 2.6 0:56.19 client
44489 root 20 0 2412.1m 205.0m 6.1m S 349.5 2.6 0:59.72 client
44489 root 20 0 2412.1m 204.7m 6.1m S 343.7 2.6 1:03.26 client
44489 root 20 0 2412.1m 230.6m 6.1m S 344.7 2.9 1:06.81 client
44489 root 20 0 2412.1m 231.6m 6.1m S 358.4 2.9 1:10.43 client
44489 root 20 0 2412.1m 231.6m 6.1m S 349.5 2.9 1:14.03 client
44489 root 20 0 2412.1m 231.4m 6.1m S 354.5 2.9 1:17.61 client
44489 root 20 0 2412.1m 231.0m 6.1m R 345.1 2.9 1:21.13 client
44489 root 20 0 2412.1m 182.9m 6.1m S 344.1 2.3 1:24.64 client
44489 root 20 0 2412.1m 178.5m 6.1m S 356.9 2.2 1:28.28 client
44489 root 20 0 2412.1m 203.6m 6.1m R 339.8 2.6 1:31.78 client
44489 root 20 0 2412.1m 203.4m 6.1m S 343.1 2.6 1:35.28 client
44489 root 20 0 2412.1m 203.1m 6.1m S 342.2 2.6 1:38.77 client
44489 root 20 0 2412.1m 196.8m 6.1m S 334.3 2.5 1:42.18 client
44489 root 20 0 2412.1m 201.8m 6.1m R 343.6 2.5 1:45.65 client
44489 root 20 0 2412.1m 201.8m 6.1m S 346.6 2.5 1:49.22 client
44621 root 20 0 1928.0m 94.2m 6.2m S 23.8 1.2 0:00.24 client
44621 root 20 0 2412.1m 193.0m 6.2m S 353.5 2.4 0:03.81 client
44621 root 20 0 2412.1m 197.1m 6.2m S 349.5 2.5 0:07.41 client
44621 root 20 0 2412.1m 197.1m 6.2m R 348.0 2.5 0:10.96 client
44621 root 20 0 2412.1m 195.5m 6.2m R 353.9 2.5 0:14.57 client
44621 root 20 0 2412.1m 195.6m 6.2m R 342.7 2.5 0:18.10 client
44621 root 20 0 2412.1m 196.6m 6.2m S 351.0 2.5 0:21.68 client
44621 root 20 0 2412.1m 210.2m 6.2m R 349.5 2.6 0:25.21 client
44621 root 20 0 2412.1m 206.1m 6.2m S 344.7 2.6 0:28.76 client
44737 root 20 0 1920.0m 84.1m 6.2m R 25.7 1.1 0:00.26 client
44737 root 20 0 2346.1m 168.6m 6.2m S 342.2 2.1 0:03.75 client
44737 root 20 0 2412.1m 198.3m 6.2m S 344.1 2.5 0:07.26 client
44737 root 20 0 2484.1m 223.4m 6.2m S 355.9 2.8 0:10.89 client
44737 root 20 0 2484.1m 223.3m 6.2m S 346.1 2.8 0:14.42 client
44737 root 20 0 2484.1m 224.3m 6.2m R 341.2 2.8 0:17.90 client
44737 root 20 0 2484.1m 186.2m 6.2m R 350.0 2.3 0:21.47 client
44737 root 20 0 2484.1m 184.1m 6.2m S 348.0 2.3 0:25.02 client
44737 root 20 0 2484.1m 198.9m 6.2m S 347.1 2.5 0:28.56 client
44737 root 20 0 2484.1m 215.9m 6.2m R 341.7 2.7 0:32.08 client
44737 root 20 0 2484.1m 216.6m 6.2m R 352.5 2.7 0:35.64 client
44737 root 20 0 2484.1m 166.5m 6.2m R 346.6 2.1 0:39.21 client
44737 root 20 0 2484.1m 201.6m 6.2m R 356.4 2.5 0:42.81 client
44848 root 20 0 1920.0m 75.2m 6.1m S 23.5 0.9 0:00.24 client
44848 root 20 0 2412.1m 201.6m 6.1m S 345.1 2.5 0:03.76 client
44848 root 20 0 2484.1m 202.2m 6.1m S 354.9 2.5 0:07.38 client
44848 root 20 0 2484.1m 201.8m 6.1m S 339.8 2.5 0:10.88 client
44848 root 20 0 2484.1m 201.6m 6.1m S 350.0 2.5 0:14.45 client
44848 root 20 0 2484.1m 201.4m 6.1m S 347.1 2.5 0:17.99 client
44848 root 20 0 2484.1m 209.3m 6.1m S 347.6 2.6 0:21.57 client
44848 root 20 0 2484.1m 209.8m 6.1m S 352.9 2.6 0:25.17 client
44848 root 20 0 2484.1m 213.3m 6.1m S 349.5 2.7 0:28.70 client
44848 root 20 0 2484.1m 213.6m 6.1m S 353.8 2.7 0:32.38 client
44848 root 20 0 2484.1m 213.2m 6.1m S 346.6 2.7 0:35.95 client
44848 root 20 0 2484.1m 212.8m 6.1m S 334.0 2.7 0:39.39 client
44848 root 20 0 2484.1m 212.6m 6.1m S 349.5 2.7 0:42.92 client
44848 root 20 0 2484.1m 182.5m 6.1m S 348.0 2.3 0:46.47 client
44848 root 20 0 2484.1m 217.1m 6.1m S 347.1 2.7 0:50.01 client
44848 root 20 0 2484.1m 217.9m 6.1m S 353.5 2.7 0:53.58 client
44848 root 20 0 2484.1m 217.6m 6.1m S 339.8 2.7 0:57.08 client
44848 root 20 0 2484.1m 217.3m 6.1m S 355.9 2.7 1:00.71 client
44848 root 20 0 2484.1m 216.9m 6.1m S 364.4 2.7 1:04.39 client
44848 root 20 0 2484.1m 212.7m 6.1m S 334.0 2.7 1:07.93 client
44848 root 20 0 2484.1m 196.6m 6.1m S 339.6 2.5 1:11.36 client
44848 root 20 0 2484.1m 196.4m 6.1m S 338.2 2.5 1:14.81 client
44848 root 20 0 2484.1m 205.5m 6.1m S 337.3 2.6 1:18.25 client
44848 root 20 0 2484.1m 210.9m 6.1m S 342.6 2.7 1:21.71 client
44848 root 20 0 2484.1m 221.0m 6.1m S 339.2 2.8 1:25.17 client
44848 root 20 0 2484.1m 220.9m 6.1m S 339.6 2.8 1:28.60 client
44848 root 20 0 2484.1m 182.7m 6.1m S 344.1 2.3 1:32.11 client
44848 root 20 0 2484.1m 225.9m 6.1m S 349.0 2.8 1:35.67 client
44848 root 20 0 2484.1m 225.7m 6.1m S 354.5 2.8 1:39.25 client
44848 root 20 0 2484.1m 225.3m 6.1m S 339.8 2.8 1:42.75 client
44848 root 20 0 2484.1m 224.9m 6.1m S 348.5 2.8 1:46.27 client
44848 root 20 0 2484.1m 212.7m 6.1m S 339.8 2.7 1:49.77 client
44848 root 20 0 2484.1m 212.4m 6.1m S 339.8 2.7 1:53.27 client
44848 root 20 0 2484.1m 212.1m 6.1m S 341.6 2.7 1:56.72 client
44848 root 20 0 2484.1m 211.7m 6.1m S 340.2 2.7 2:00.19 client
44848 root 20 0 2484.1m 211.3m 6.1m S 348.5 2.7 2:03.71 client
44848 root 20 0 2484.1m 211.0m 6.1m S 343.1 2.7 2:07.21 client
44848 root 20 0 2484.1m 206.6m 6.1m S 331.1 2.6 2:10.62 client
44848 root 20 0 2484.1m 211.3m 6.1m S 336.9 2.7 2:14.09 client
44848 root 20 0 2484.1m 211.4m 6.1m S 343.6 2.7 2:17.56 client
44848 root 20 0 2484.1m 211.1m 6.1m S 336.3 2.7 2:20.99 client
44848 root 20 0 2484.1m 180.9m 6.1m S 343.1 2.3 2:24.49 client
44848 root 20 0 2484.1m 192.2m 6.1m S 339.6 2.4 2:27.92 client
44848 root 20 0 2484.1m 201.8m 6.1m S 339.2 2.5 2:31.38 client
44848 root 20 0 2484.1m 201.7m 6.1m S 344.7 2.5 2:34.93 client
44848 root 20 0 2484.1m 201.3m 6.1m S 332.4 2.5 2:38.32 client
44848 root 20 0 2484.1m 211.9m 6.1m S 354.5 2.7 2:41.90 client
44848 root 20 0 2484.1m 212.2m 6.1m S 339.8 2.7 2:45.40 client
44848 root 20 0 2484.1m 217.5m 6.1m S 345.1 2.7 2:48.92 client
44848 root 20 0 2484.1m 217.4m 6.1m S 346.5 2.7 2:52.42 client
44848 root 20 0 2484.1m 217.1m 6.1m S 334.3 2.7 2:55.83 client
44848 root 20 0 2484.1m 218.8m 6.1m S 343.6 2.8 2:59.30 client
44848 root 20 0 2484.1m 190.7m 6.1m S 343.1 2.4 3:02.80 client
44848 root 20 0 2484.1m 190.4m 6.1m S 331.4 2.4 3:06.18 client
44848 root 20 0 2484.1m 196.4m 6.1m S 348.0 2.5 3:09.73 client
44848 root 20 0 2484.1m 199.8m 6.1m S 343.7 2.5 3:13.27 client
44848 root 20 0 2484.1m 205.0m 6.1m S 342.6 2.6 3:16.73 client
44848 root 20 0 2484.1m 213.3m 6.1m S 346.1 2.7 3:20.26 client
44848 root 20 0 2484.1m 213.5m 6.1m S 340.2 2.7 3:23.73 client
44848 root 20 0 2484.1m 213.1m 6.1m S 338.8 2.7 3:27.22 client
44848 root 20 0 2484.1m 192.9m 6.1m S 343.1 2.4 3:30.72 client
44848 root 20 0 2484.1m 216.4m 6.1m S 340.8 2.7 3:34.23 client
44848 root 20 0 2484.1m 216.3m 6.1m S 344.6 2.7 3:37.71 client
44848 root 20 0 2484.1m 216.0m 6.1m S 340.2 2.7 3:41.18 client
44848 root 20 0 2484.1m 212.9m 6.1m S 342.2 2.7 3:44.67 client
44848 root 20 0 2484.1m 150.9m 6.1m S 344.1 1.9 3:48.18 client
44848 root 20 0 2484.1m 211.0m 6.1m S 345.1 2.7 3:51.70 client
44848 root 20 0 2484.1m 211.5m 6.1m S 342.6 2.7 3:55.16 client
44848 root 20 0 2484.1m 216.5m 6.1m S 335.3 2.7 3:58.58 client
44848 root 20 0 2484.1m 216.2m 6.1m S 337.3 2.7 4:02.02 client
44848 root 20 0 2550.2m 248.7m 6.1m S 340.8 3.1 4:05.53 client
44848 root 20 0 2550.2m 248.3m 6.1m S 349.5 3.1 4:09.06 client
44848 root 20 0 2550.2m 247.8m 6.1m S 351.5 3.1 4:12.68 client
44848 root 20 0 2550.2m 213.7m 6.1m S 332.7 2.7 4:16.14 client
44848 root 20 0 2550.2m 157.7m 6.1m S 337.3 2.0 4:19.58 client
44848 root 20 0 2550.2m 207.0m 6.1m S 342.2 2.6 4:23.07 client
44848 root 20 0 2550.2m 208.3m 6.1m S 351.5 2.6 4:26.62 client
44848 root 20 0 2550.2m 208.0m 6.1m S 348.0 2.6 4:30.17 client
44848 root 20 0 2550.2m 207.7m 6.1m S 349.5 2.6 4:33.70 client
44848 root 20 0 2550.2m 167.7m 6.1m S 344.7 2.1 4:37.25 client
44848 root 20 0 2550.2m 198.8m 6.1m S 340.2 2.5 4:40.72 client
44848 root 20 0 2550.2m 213.8m 6.1m S 346.6 2.7 4:44.29 client
44848 root 20 0 2550.2m 214.0m 6.1m S 344.1 2.7 4:47.80 client
44848 root 20 0 2550.2m 207.6m 6.1m S 348.0 2.6 4:51.35 client
44848 root 20 0 2550.2m 207.3m 6.1m S 352.9 2.6 4:54.95 client
44848 root 20 0 2550.2m 207.0m 6.1m S 344.1 2.6 4:58.46 client
44848 root 20 0 2550.2m 206.7m 6.1m S 346.6 2.6 5:02.03 client
44848 root 20 0 2550.2m 214.0m 6.1m S 348.0 2.7 5:05.58 client
44848 root 20 0 2550.2m 209.6m 6.1m S 342.6 2.6 5:09.04 client
44848 root 20 0 2550.2m 193.4m 6.1m S 339.2 2.4 5:12.50 client
44848 root 20 0 2550.2m 193.9m 6.1m S 345.5 2.4 5:15.99 client
44848 root 20 0 2550.2m 193.9m 6.1m S 354.4 2.4 5:19.64 client
44848 root 20 0 2550.2m 181.7m 6.1m S 337.9 2.3 5:23.12 client
44848 root 20 0 2550.2m 195.0m 6.1m S 349.0 2.5 5:26.68 client
44848 root 20 0 2550.2m 194.7m 6.1m S 352.5 2.4 5:30.24 client
44848 root 20 0 2550.2m 201.6m 6.1m S 346.1 2.5 5:33.77 client
44848 root 20 0 2550.2m 201.5m 6.1m S 342.2 2.5 5:37.26 client
44848 root 20 0 2550.2m 193.3m 6.1m S 352.9 2.4 5:40.86 client
44848 root 20 0 2550.2m 205.4m 6.1m S 353.9 2.6 5:44.47 client
44848 root 20 0 2550.2m 181.5m 6.1m S 342.2 2.3 5:47.96 client
44848 root 20 0 2550.2m 198.1m 6.1m S 344.1 2.5 5:51.47 client
44848 root 20 0 2550.2m 201.7m 6.1m S 354.5 2.5 5:55.05 client
44848 root 20 0 2550.2m 193.5m 6.1m S 348.0 2.4 5:58.60 client
44848 root 20 0 2550.2m 193.1m 6.1m S 341.3 2.4 6:02.15 client
44848 root 20 0 2550.2m 198.4m 6.1m S 349.5 2.5 6:05.68 client
44848 root 20 0 2550.2m 198.3m 6.1m S 339.2 2.5 6:09.14 client
44848 root 20 0 2550.2m 201.4m 6.1m S 347.6 2.5 6:12.72 client
44848 root 20 0 2550.2m 195.4m 6.1m S 352.9 2.5 6:16.32 client
44848 root 20 0 2550.2m 199.6m 6.1m S 346.2 2.5 6:19.92 client
44848 root 20 0 2550.2m 201.9m 6.1m S 344.7 2.5 6:23.47 client
44848 root 20 0 2550.2m 229.3m 6.1m S 349.5 2.9 6:27.07 client
44848 root 20 0 2550.2m 181.3m 6.1m S 346.6 2.3 6:30.64 client
44848 root 20 0 2550.2m 180.6m 6.1m S 346.5 2.3 6:34.14 client
44848 root 20 0 2550.2m 180.8m 6.1m S 349.0 2.3 6:37.70 client
44848 root 20 0 2550.2m 212.2m 6.1m S 351.5 2.7 6:41.25 client
44848 root 20 0 2550.2m 212.2m 6.1m S 341.2 2.7 6:44.73 client
44848 root 20 0 2550.2m 211.8m 6.1m S 345.1 2.7 6:48.25 client
44848 root 20 0 2550.2m 185.7m 6.1m S 345.1 2.3 6:51.77 client
44848 root 20 0 2550.2m 196.3m 6.1m S 342.2 2.5 6:55.26 client
44848 root 20 0 2550.2m 203.3m 6.1m S 356.9 2.6 6:58.90 client
44848 root 20 0 2622.2m 206.1m 6.1m S 350.0 2.6 7:02.47 client
44848 root 20 0 2622.2m 206.5m 6.1m S 357.4 2.6 7:06.08 client
44848 root 20 0 2622.2m 208.0m 6.1m S 345.2 2.6 7:09.67 client
44848 root 20 0 2622.2m 207.9m 6.1m S 350.0 2.6 7:13.24 client
44848 root 20 0 2622.2m 179.7m 6.1m S 343.6 2.3 7:16.71 client
44848 root 20 0 2622.2m 212.4m 6.1m S 346.6 2.7 7:20.28 client
44848 root 20 0 2622.2m 212.6m 6.1m S 347.1 2.7 7:23.82 client
44848 root 20 0 2622.2m 214.6m 6.1m S 344.7 2.7 7:27.37 client
44848 root 20 0 2622.2m 214.9m 6.1m S 363.4 2.7 7:31.04 client
44848 root 20 0 2622.2m 214.5m 6.1m S 340.4 2.7 7:34.58 client
44848 root 20 0 2622.2m 214.1m 6.1m S 344.7 2.7 7:38.13 client
44848 root 20 0 2622.2m 213.8m 6.1m S 350.5 2.7 7:41.67 client
44848 root 20 0 2622.2m 219.3m 6.1m S 353.9 2.8 7:45.28 client
44848 root 20 0 2622.2m 219.2m 6.1m S 344.7 2.8 7:48.83 client
44848 root 20 0 2622.2m 219.0m 6.1m S 352.0 2.8 7:52.42 client
44848 root 20 0 2622.2m 218.6m 6.1m S 342.7 2.7 7:55.95 client
44848 root 20 0 2622.2m 218.2m 6.1m S 351.0 2.7 7:59.53 client
44848 root 20 0 2622.2m 218.7m 6.1m S 349.5 2.8 8:03.13 client
44848 root 20 0 2622.2m 218.4m 6.1m S 352.0 2.7 8:06.72 client
44848 root 20 0 2622.2m 218.0m 6.1m S 348.5 2.7 8:10.24 client
44848 root 20 0 2622.2m 209.7m 6.1m S 349.0 2.6 8:13.80 client
44848 root 20 0 2622.2m 185.4m 6.1m S 352.9 2.3 8:17.40 client
44848 root 20 0 2622.2m 200.9m 6.1m S 352.9 2.5 8:21.00 client
44848 root 20 0 2622.2m 169.4m 6.1m S 341.7 2.1 8:24.52 client
44848 root 20 0 2622.2m 208.6m 6.1m S 361.8 2.6 8:28.21 client
44848 root 20 0 2622.2m 193.9m 6.1m S 349.5 2.4 8:31.81 client
44848 root 20 0 2622.2m 221.6m 6.1m S 353.4 2.8 8:35.45 client
44848 root 20 0 2622.2m 241.3m 6.1m S 345.6 3.0 8:39.01 client
44848 root 20 0 2622.2m 239.7m 6.1m S 346.1 3.0 8:42.54 client
44848 root 20 0 2622.2m 177.7m 6.1m S 349.5 2.2 8:46.07 client
44848 root 20 0 2622.2m 179.3m 6.1m S 347.6 2.3 8:49.65 client
44848 root 20 0 2622.2m 185.2m 6.1m S 354.9 2.3 8:53.27 client
44848 root 20 0 2622.2m 215.8m 6.1m S 345.6 2.7 8:56.83 client
44848 root 20 0 2622.2m 215.7m 6.1m S 351.0 2.7 9:00.41 client
44848 root 20 0 2622.2m 185.7m 6.1m S 357.8 2.3 9:04.06 client
44848 root 20 0 2622.2m 176.7m 6.1m S 340.8 2.2 9:07.57 client
44848 root 20 0 2622.2m 203.0m 6.1m S 355.4 2.6 9:11.16 client
44848 root 20 0 2622.2m 203.3m 6.1m S 361.8 2.6 9:14.85 client
44968 root 20 0 2276.1m 192.1m 6.2m S 232.0 2.4 0:02.32 client
44968 root 20 0 2412.1m 195.2m 6.2m R 354.4 2.5 0:05.97 client
44968 root 20 0 2412.1m 195.2m 6.2m S 353.9 2.5 0:09.58 client
44968 root 20 0 2412.1m 224.0m 6.2m S 356.9 2.8 0:13.22 client
44968 root 20 0 2412.1m 224.0m 6.2m S 359.8 2.8 0:16.89 client
44968 root 20 0 2412.1m 223.6m 6.2m S 349.5 2.8 0:20.49 client
44968 root 20 0 2412.1m 223.3m 6.2m S 353.5 2.8 0:24.06 client
44968 root 20 0 2412.1m 223.0m 6.2m R 356.9 2.8 0:27.70 client
44968 root 20 0 2412.1m 231.1m 6.2m R 356.3 2.9 0:31.37 client
44968 root 20 0 2412.1m 220.9m 6.2m S 352.9 2.8 0:34.97 client
44968 root 20 0 2412.1m 220.5m 6.2m S 357.8 2.8 0:38.62 client
44968 root 20 0 2412.1m 222.8m 6.2m R 352.9 2.8 0:42.22 client
44968 root 20 0 2412.1m 211.0m 6.2m R 345.2 2.7 0:45.81 client
44968 root 20 0 2412.1m 217.8m 6.2m S 350.0 2.7 0:49.38 client
44968 root 20 0 2556.1m 217.7m 6.2m S 363.4 2.7 0:53.05 client
44968 root 20 0 2556.1m 217.3m 6.2m S 348.0 2.7 0:56.60 client
44968 root 20 0 2556.1m 217.0m 6.2m S 359.2 2.7 1:00.30 client
Example Code
// server.go
package main
import (
"flag"
"fmt"
"log"
"net/http"
"os"
"os/signal"
"sync/atomic"
"time"
"github.com/lesismal/llib/std/crypto/tls"
"github.com/lesismal/nbio"
"github.com/lesismal/nbio/nbhttp"
"github.com/lesismal/nbio/nbhttp/websocket"
)
var (
qps int64 = 0
qpsTotal int64 = 0
flow int64 = 0
flowTotal int64 = 0
svr *nbhttp.Server
)
func newUpgrader() *websocket.Upgrader {
u := websocket.NewUpgrader()
u.OnMessage(func(c *websocket.Conn, messageType websocket.MessageType, data []byte) {
atomic.AddInt64(&qps, 1)
atomic.AddInt64(&flow, int64(len(data)))
// echo
// time.AfterFunc(1000, func() {
c.WriteMessage(messageType, data)
// })
})
u.OnClose(func(c *websocket.Conn, err error) {
fmt.Println("OnClose:", c.RemoteAddr().String(), err)
})
return u
}
func onWebsocket(w http.ResponseWriter, r *http.Request) {
// time.Sleep(time.Second * 5)
upgrader := newUpgrader()
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
panic(err)
}
conn.SetReadDeadline(time.Time{})
wsConn := conn.(*websocket.Conn)
fmt.Println("OnOpen:", wsConn.RemoteAddr().String())
}
func main() {
flag.Parse()
cert, err := tls.X509KeyPair(rsaCertPEM, rsaKeyPEM)
if err != nil {
log.Fatalf("tls.X509KeyPair failed: %v", err)
}
tlsConfig := &tls.Config{
Certificates: []tls.Certificate{cert},
InsecureSkipVerify: true,
}
mux := &http.ServeMux{}
mux.HandleFunc("/wss", onWebsocket)
svr = nbhttp.NewServerTLS(nbhttp.Config{
Network: "tcp",
Addrs: []string{"localhost:8888"},
ReleaseWebsocketPayload: true,
}, mux, nil, tlsConfig)
svr.OnOpen(func(c *nbio.Conn) {
c.SetReadBuffer(1024 * 1024 * 2)
c.SetWriteBuffer(1024 * 1024 * 2)
})
err = svr.Start()
if err != nil {
fmt.Printf("nbio.Start failed: %v\n", err)
return
}
defer svr.Stop()
go func() {
ticker := time.NewTicker(time.Second)
for i := 0; true; i++ {
<-ticker.C
q := atomic.SwapInt64(&qps, 0)
f := atomic.SwapInt64(&flow, 0)
qpsTotal += q
flowTotal += f
log.Printf("[%03d] [qps: %v, qpsTotal: %v] [flow: %v M, flowTotal: %v M]", i, q, qpsTotal, f/1024/1024, flowTotal/1024/1024)
}
}()
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
<-interrupt
log.Println("exit")
}
var rsaCertPEM = []byte(`-----BEGIN CERTIFICATE-----
MIIDazCCAlOgAwIBAgIUJeohtgk8nnt8ofratXJg7kUJsI4wDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDEyMDcwODIyNThaFw0zMDEy
MDUwODIyNThaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCy+ZrIvwwiZv4bPmvKx/637ltZLwfgh3ouiEaTchGu
IQltthkqINHxFBqqJg44TUGHWthlrq6moQuKnWNjIsEc6wSD1df43NWBLgdxbPP0
x4tAH9pIJU7TQqbznjDBhzRbUjVXBIcn7bNknY2+5t784pPF9H1v7h8GqTWpNH9l
cz/v+snoqm9HC+qlsFLa4A3X9l5v05F1uoBfUALlP6bWyjHAfctpiJkoB9Yw1TJa
gpq7E50kfttwfKNkkAZIbib10HugkMoQJAs2EsGkje98druIl8IXmuvBIF6nZHuM
lt3UIZjS9RwPPLXhRHt1P0mR7BoBcOjiHgtSEs7Wk+j7AgMBAAGjUzBRMB0GA1Ud
DgQWBBQdheJv73XSOhgMQtkwdYPnfO02+TAfBgNVHSMEGDAWgBQdheJv73XSOhgM
QtkwdYPnfO02+TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBf
SKVNMdmBpD9m53kCrguo9iKQqmhnI0WLkpdWszc/vBgtpOE5ENOfHGAufHZve871
2fzTXrgR0TF6UZWsQOqCm5Oh3URsCdXWewVMKgJ3DCii6QJ0MnhSFt6+xZE9C6Hi
WhcywgdR8t/JXKDam6miohW8Rum/IZo5HK9Jz/R9icKDGumcqoaPj/ONvY4EUwgB
irKKB7YgFogBmCtgi30beLVkXgk0GEcAf19lHHtX2Pv/lh3m34li1C9eBm1ca3kk
M2tcQtm1G89NROEjcG92cg+GX3GiWIjbI0jD1wnVy2LCOXMgOVbKfGfVKISFt0b1
DNn00G8C6ttLoGU2snyk
-----END CERTIFICATE-----
`)
var rsaKeyPEM = []byte(`-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAsvmayL8MImb+Gz5rysf+t+5bWS8H4Id6LohGk3IRriEJbbYZ
KiDR8RQaqiYOOE1Bh1rYZa6upqELip1jYyLBHOsEg9XX+NzVgS4HcWzz9MeLQB/a
SCVO00Km854wwYc0W1I1VwSHJ+2zZJ2Nvube/OKTxfR9b+4fBqk1qTR/ZXM/7/rJ
6KpvRwvqpbBS2uAN1/Zeb9ORdbqAX1AC5T+m1soxwH3LaYiZKAfWMNUyWoKauxOd
JH7bcHyjZJAGSG4m9dB7oJDKECQLNhLBpI3vfHa7iJfCF5rrwSBep2R7jJbd1CGY
0vUcDzy14UR7dT9JkewaAXDo4h4LUhLO1pPo+wIDAQABAoIBAF6yWwekrlL1k7Xu
jTI6J7hCUesaS1yt0iQUzuLtFBXCPS7jjuUPgIXCUWl9wUBhAC8SDjWe+6IGzAiH
xjKKDQuz/iuTVjbDAeTb6exF7b6yZieDswdBVjfJqHR2Wu3LEBTRpo9oQesKhkTS
aFF97rZ3XCD9f/FdWOU5Wr8wm8edFK0zGsZ2N6r57yf1N6ocKlGBLBZ0v1Sc5ShV
1PVAxeephQvwL5DrOgkArnuAzwRXwJQG78L0aldWY2q6xABQZQb5+ml7H/kyytef
i+uGo3jHKepVALHmdpCGr9Yv+yCElup+ekv6cPy8qcmMBqGMISL1i1FEONxLcKWp
GEJi6QECgYEA3ZPGMdUm3f2spdHn3C+/+xskQpz6efiPYpnqFys2TZD7j5OOnpcP
ftNokA5oEgETg9ExJQ8aOCykseDc/abHerYyGw6SQxmDbyBLmkZmp9O3iMv2N8Pb
Nrn9kQKSr6LXZ3gXzlrDvvRoYUlfWuLSxF4b4PYifkA5AfsdiKkj+5sCgYEAzseF
XDTRKHHJnzxZDDdHQcwA0G9agsNj64BGUEjsAGmDiDyqOZnIjDLRt0O2X3oiIE5S
TXySSEiIkxjfErVJMumLaIwqVvlS4pYKdQo1dkM7Jbt8wKRQdleRXOPPN7msoEUk
Ta9ZsftHVUknPqblz9Uthb5h+sRaxIaE1llqDiECgYATS4oHzuL6k9uT+Qpyzymt
qThoIJljQ7TgxjxvVhD9gjGV2CikQM1Vov1JBigj4Toc0XuxGXaUC7cv0kAMSpi2
Y+VLG+K6ux8J70sGHTlVRgeGfxRq2MBfLKUbGplBeDG/zeJs0tSW7VullSkblgL6
nKNa3LQ2QEt2k7KHswryHwKBgENDxk8bY1q7wTHKiNEffk+aFD25q4DUHMH0JWti
fVsY98+upFU+gG2S7oOmREJE0aser0lDl7Zp2fu34IEOdfRY4p+s0O0gB+Vrl5VB
L+j7r9bzaX6lNQN6MvA7ryHahZxRQaD/xLbQHgFRXbHUyvdTyo4yQ1821qwNclLk
HUrhAoGAUtjR3nPFR4TEHlpTSQQovS8QtGTnOi7s7EzzdPWmjHPATrdLhMA0ezPj
Mr+u5TRncZBIzAZtButlh1AHnpN/qO3P0c0Rbdep3XBc/82JWO8qdb5QvAkxga3X
BpA7MNLxiqss+rCbwf3NbWxEMiDQ2zRwVoafVFys7tjmv6t2Xck=
-----END RSA PRIVATE KEY-----
`)
// cleint.go
package main
import (
"context"
"crypto/rand"
"fmt"
"net/url"
"os"
"os/signal"
"time"
"github.com/lesismal/nbio"
"github.com/lesismal/nbio/nbhttp"
"github.com/lesismal/nbio/nbhttp/websocket"
"github.com/lesismal/llib/std/crypto/tls"
)
func newUpgrader() *websocket.Upgrader {
u := websocket.NewUpgrader()
u.OnMessage(func(c *websocket.Conn, messageType websocket.MessageType, data []byte) {
// echo
// time.AfterFunc(1000, func() {
c.WriteMessage(messageType, data)
// })
})
u.OnClose(func(c *websocket.Conn, err error) {
fmt.Println("OnClose:", c.RemoteAddr().String(), err)
})
return u
}
func main() {
engine := nbhttp.NewEngineTLS(nbhttp.Config{
SupportClient: true,
ReleaseWebsocketPayload: true,
})
engine.OnOpen(func(c *nbio.Conn) {
c.SetReadBuffer(1024 * 1024 * 2)
c.SetWriteBuffer(1024 * 1024 * 2)
})
err := engine.Start()
if err != nil {
fmt.Printf("nbio.Start failed: %v\n", err)
return
}
tlsConfig := &tls.Config{
InsecureSkipVerify: true,
}
clientNum := 10
conns := make([]*websocket.Conn, clientNum)
for i := 0; i < clientNum; i++ {
u := url.URL{Scheme: "wss", Host: "localhost:8888", Path: "/wss"}
dialer := &websocket.Dialer{
Engine: engine,
Upgrader: newUpgrader(),
DialTimeout: time.Second * 3,
TLSClientConfig: tlsConfig,
}
c, _, err := dialer.Dial(u.String(), nil)
if err != nil {
panic(fmt.Errorf("dial: %v", err))
}
c.SetReadDeadline(time.Time{})
conns[i] = c
}
data := make([]byte, 1024*1024)
rand.Read(data)
for _, c := range conns {
c.WriteMessage(websocket.BinaryMessage, data)
}
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
<-interrupt
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
engine.Shutdown(ctx)
}
server log
root@ubuntu:~/large# go run ./server/
2021/10/03 11:00:42.966 [INF] Gopher[NB] start listen on: ["localhost:8888"]
2021/10/03 11:00:43 [000] [qps: 0, qpsTotal: 0] [flow: 0 M, flowTotal: 0 M]
2021/10/03 11:00:44 [001] [qps: 0, qpsTotal: 0] [flow: 0 M, flowTotal: 0 M]
2021/10/03 11:00:45 [002] [qps: 0, qpsTotal: 0] [flow: 0 M, flowTotal: 0 M]
2021/10/03 11:00:46 [003] [qps: 0, qpsTotal: 0] [flow: 0 M, flowTotal: 0 M]
2021/10/03 11:00:47 [004] [qps: 0, qpsTotal: 0] [flow: 0 M, flowTotal: 0 M]
2021/10/03 11:00:48 [005] [qps: 0, qpsTotal: 0] [flow: 0 M, flowTotal: 0 M]
OnOpen: 127.0.0.1:35620
OnOpen: 127.0.0.1:35622
OnOpen: 127.0.0.1:35624
OnOpen: 127.0.0.1:35626
OnOpen: 127.0.0.1:35628
OnOpen: 127.0.0.1:35630
OnOpen: 127.0.0.1:35632
OnOpen: 127.0.0.1:35634
OnOpen: 127.0.0.1:35636
OnOpen: 127.0.0.1:35638
2021/10/03 11:00:49 [006] [qps: 29, qpsTotal: 29] [flow: 29 M, flowTotal: 29 M]
2021/10/03 11:00:50 [007] [qps: 273, qpsTotal: 302] [flow: 273 M, flowTotal: 302 M]
2021/10/03 11:00:51 [008] [qps: 280, qpsTotal: 582] [flow: 280 M, flowTotal: 582 M]
2021/10/03 11:00:52 [009] [qps: 271, qpsTotal: 853] [flow: 271 M, flowTotal: 853 M]
2021/10/03 11:00:53 [010] [qps: 276, qpsTotal: 1129] [flow: 276 M, flowTotal: 1129 M]
2021/10/03 11:00:54 [011] [qps: 279, qpsTotal: 1408] [flow: 279 M, flowTotal: 1408 M]
2021/10/03 11:00:55 [012] [qps: 277, qpsTotal: 1685] [flow: 277 M, flowTotal: 1685 M]
2021/10/03 11:00:56 [013] [qps: 269, qpsTotal: 1954] [flow: 269 M, flowTotal: 1954 M]
2021/10/03 11:00:57 [014] [qps: 282, qpsTotal: 2236] [flow: 282 M, flowTotal: 2236 M]
2021/10/03 11:00:58 [015] [qps: 264, qpsTotal: 2500] [flow: 264 M, flowTotal: 2500 M]
2021/10/03 11:00:59 [016] [qps: 269, qpsTotal: 2769] [flow: 269 M, flowTotal: 2769 M]
2021/10/03 11:01:00 [017] [qps: 276, qpsTotal: 3045] [flow: 276 M, flowTotal: 3045 M]
2021/10/03 11:01:01 [018] [qps: 273, qpsTotal: 3318] [flow: 273 M, flowTotal: 3318 M]
2021/10/03 11:01:02 [019] [qps: 257, qpsTotal: 3575] [flow: 257 M, flowTotal: 3575 M]
2021/10/03 11:01:03 [020] [qps: 274, qpsTotal: 3849] [flow: 274 M, flowTotal: 3849 M]
2021/10/03 11:01:04 [021] [qps: 274, qpsTotal: 4123] [flow: 274 M, flowTotal: 4123 M]
2021/10/03 11:01:05 [022] [qps: 267, qpsTotal: 4390] [flow: 267 M, flowTotal: 4390 M]
2021/10/03 11:01:06 [023] [qps: 264, qpsTotal: 4654] [flow: 264 M, flowTotal: 4654 M]
2021/10/03 11:01:07 [024] [qps: 284, qpsTotal: 4938] [flow: 284 M, flowTotal: 4938 M]
2021/10/03 11:01:08 [025] [qps: 261, qpsTotal: 5199] [flow: 261 M, flowTotal: 5199 M]
2021/10/03 11:01:09 [026] [qps: 268, qpsTotal: 5467] [flow: 268 M, flowTotal: 5467 M]
2021/10/03 11:01:10 [027] [qps: 283, qpsTotal: 5750] [flow: 283 M, flowTotal: 5750 M]
2021/10/03 11:01:11 [028] [qps: 278, qpsTotal: 6028] [flow: 278 M, flowTotal: 6028 M]
2021/10/03 11:01:12 [029] [qps: 283, qpsTotal: 6311] [flow: 283 M, flowTotal: 6311 M]
2021/10/03 11:01:13 [030] [qps: 276, qpsTotal: 6587] [flow: 276 M, flowTotal: 6587 M]
2021/10/03 11:01:14 [031] [qps: 267, qpsTotal: 6854] [flow: 267 M, flowTotal: 6854 M]
2021/10/03 11:01:15 [032] [qps: 248, qpsTotal: 7102] [flow: 248 M, flowTotal: 7102 M]
2021/10/03 11:01:16 [033] [qps: 278, qpsTotal: 7380] [flow: 278 M, flowTotal: 7380 M]
2021/10/03 11:01:17 [034] [qps: 279, qpsTotal: 7659] [flow: 279 M, flowTotal: 7659 M]
2021/10/03 11:01:18 [035] [qps: 277, qpsTotal: 7936] [flow: 277 M, flowTotal: 7936 M]
2021/10/03 11:01:19 [036] [qps: 271, qpsTotal: 8207] [flow: 271 M, flowTotal: 8207 M]
2021/10/03 11:01:20 [037] [qps: 273, qpsTotal: 8480] [flow: 273 M, flowTotal: 8480 M]
2021/10/03 11:01:21 [038] [qps: 273, qpsTotal: 8753] [flow: 273 M, flowTotal: 8753 M]
OnClose: 127.0.0.1:35624 connection reset by peer
OnClose: 127.0.0.1:35628 <nil>
OnClose: 127.0.0.1:35632 EOF
OnClose: 127.0.0.1:35620 <nil>
OnClose: 127.0.0.1:35630 <nil>
OnClose: 127.0.0.1:35626 <nil>
OnClose: 127.0.0.1:35636 <nil>
OnClose: 127.0.0.1:35634 <nil>
OnClose: 127.0.0.1:35622 <nil>
OnClose: 127.0.0.1:35638 <nil>
2021/10/03 11:01:22 [039] [qps: 46, qpsTotal: 8799] [flow: 46 M, flowTotal: 8799 M]
OnOpen: 127.0.0.1:35640
OnOpen: 127.0.0.1:35642
OnOpen: 127.0.0.1:35644
OnOpen: 127.0.0.1:35646
OnOpen: 127.0.0.1:35648
OnOpen: 127.0.0.1:35650
OnOpen: 127.0.0.1:35652
OnOpen: 127.0.0.1:35654
OnOpen: 127.0.0.1:35656
OnOpen: 127.0.0.1:35658
2021/10/03 11:01:23 [040] [qps: 237, qpsTotal: 9036] [flow: 237 M, flowTotal: 9036 M]
2021/10/03 11:01:24 [041] [qps: 272, qpsTotal: 9308] [flow: 272 M, flowTotal: 9308 M]
2021/10/03 11:01:25 [042] [qps: 273, qpsTotal: 9581] [flow: 273 M, flowTotal: 9581 M]
2021/10/03 11:01:26 [043] [qps: 284, qpsTotal: 9865] [flow: 284 M, flowTotal: 9865 M]
2021/10/03 11:01:27 [044] [qps: 263, qpsTotal: 10128] [flow: 263 M, flowTotal: 10128 M]
2021/10/03 11:01:28 [045] [qps: 264, qpsTotal: 10392] [flow: 264 M, flowTotal: 10392 M]
2021/10/03 11:01:29 [046] [qps: 271, qpsTotal: 10663] [flow: 271 M, flowTotal: 10663 M]
2021/10/03 11:01:30 [047] [qps: 274, qpsTotal: 10937] [flow: 274 M, flowTotal: 10937 M]
2021/10/03 11:01:31 [048] [qps: 280, qpsTotal: 11217] [flow: 280 M, flowTotal: 11217 M]
OnClose: 127.0.0.1:35658 broken pipe
OnClose: 127.0.0.1:35648 <nil>
OnClose: 127.0.0.1:35642 <nil>
OnClose: 127.0.0.1:35654 EOF
OnClose: 127.0.0.1:35646 <nil>
OnClose: 127.0.0.1:35650 <nil>
OnClose: 127.0.0.1:35644 <nil>
OnClose: 127.0.0.1:35652 broken pipe
OnClose: 127.0.0.1:35640 broken pipe
OnClose: 127.0.0.1:35656 <nil>
2021/10/03 11:01:32 [049] [qps: 76, qpsTotal: 11293] [flow: 76 M, flowTotal: 11293 M]
OnOpen: 127.0.0.1:35660
OnOpen: 127.0.0.1:35662
OnOpen: 127.0.0.1:35664
OnOpen: 127.0.0.1:35666
OnOpen: 127.0.0.1:35668
OnOpen: 127.0.0.1:35670
OnOpen: 127.0.0.1:35672
OnOpen: 127.0.0.1:35674
OnOpen: 127.0.0.1:35676
OnOpen: 127.0.0.1:35678
2021/10/03 11:01:33 [050] [qps: 184, qpsTotal: 11477] [flow: 184 M, flowTotal: 11477 M]
2021/10/03 11:01:34 [051] [qps: 277, qpsTotal: 11754] [flow: 277 M, flowTotal: 11754 M]
2021/10/03 11:01:35 [052] [qps: 271, qpsTotal: 12025] [flow: 271 M, flowTotal: 12025 M]
2021/10/03 11:01:36 [053] [qps: 267, qpsTotal: 12292] [flow: 267 M, flowTotal: 12292 M]
2021/10/03 11:01:37 [054] [qps: 273, qpsTotal: 12565] [flow: 273 M, flowTotal: 12565 M]
2021/10/03 11:01:38 [055] [qps: 273, qpsTotal: 12838] [flow: 273 M, flowTotal: 12838 M]
2021/10/03 11:01:39 [056] [qps: 274, qpsTotal: 13112] [flow: 274 M, flowTotal: 13112 M]
2021/10/03 11:01:40 [057] [qps: 276, qpsTotal: 13388] [flow: 276 M, flowTotal: 13388 M]
2021/10/03 11:01:41 [058] [qps: 269, qpsTotal: 13657] [flow: 269 M, flowTotal: 13657 M]
2021/10/03 11:01:42 [059] [qps: 277, qpsTotal: 13934] [flow: 277 M, flowTotal: 13934 M]
2021/10/03 11:01:43 [060] [qps: 266, qpsTotal: 14200] [flow: 266 M, flowTotal: 14200 M]
2021/10/03 11:01:44 [061] [qps: 267, qpsTotal: 14467] [flow: 267 M, flowTotal: 14467 M]
OnClose: 127.0.0.1:35672 broken pipe
OnClose: 127.0.0.1:35674 <nil>
OnClose: 127.0.0.1:35668 EOF
OnClose: 127.0.0.1:35664 <nil>
OnClose: 127.0.0.1:35660 EOF
OnClose: 127.0.0.1:35676 <nil>
OnClose: 127.0.0.1:35670 <nil>
OnClose: 127.0.0.1:35666 <nil>
OnClose: 127.0.0.1:35662 <nil>
OnClose: 127.0.0.1:35678 <nil>
2021/10/03 11:01:45 [062] [qps: 229, qpsTotal: 14696] [flow: 229 M, flowTotal: 14696 M]
OnOpen: 127.0.0.1:35680
OnOpen: 127.0.0.1:35682
OnOpen: 127.0.0.1:35684
OnOpen: 127.0.0.1:35686
OnOpen: 127.0.0.1:35688
OnOpen: 127.0.0.1:35690
OnOpen: 127.0.0.1:35692
OnOpen: 127.0.0.1:35694
OnOpen: 127.0.0.1:35696
OnOpen: 127.0.0.1:35698
2021/10/03 11:01:46 [063] [qps: 108, qpsTotal: 14804] [flow: 108 M, flowTotal: 14804 M]
2021/10/03 11:01:47 [064] [qps: 274, qpsTotal: 15078] [flow: 274 M, flowTotal: 15078 M]
2021/10/03 11:01:48 [065] [qps: 268, qpsTotal: 15346] [flow: 268 M, flowTotal: 15346 M]
2021/10/03 11:01:49 [066] [qps: 272, qpsTotal: 15618] [flow: 272 M, flowTotal: 15618 M]
2021/10/03 11:01:50 [067] [qps: 272, qpsTotal: 15890] [flow: 272 M, flowTotal: 15890 M]
2021/10/03 11:01:51 [068] [qps: 276, qpsTotal: 16166] [flow: 276 M, flowTotal: 16166 M]
2021/10/03 11:01:52 [069] [qps: 277, qpsTotal: 16443] [flow: 277 M, flowTotal: 16443 M]
2021/10/03 11:01:53 [070] [qps: 269, qpsTotal: 16712] [flow: 269 M, flowTotal: 16712 M]
2021/10/03 11:01:54 [071] [qps: 276, qpsTotal: 16988] [flow: 276 M, flowTotal: 16988 M]
2021/10/03 11:01:55 [072] [qps: 271, qpsTotal: 17259] [flow: 271 M, flowTotal: 17259 M]
2021/10/03 11:01:56 [073] [qps: 271, qpsTotal: 17530] [flow: 271 M, flowTotal: 17530 M]
2021/10/03 11:01:57 [074] [qps: 266, qpsTotal: 17796] [flow: 266 M, flowTotal: 17796 M]
2021/10/03 11:01:58 [075] [qps: 271, qpsTotal: 18067] [flow: 271 M, flowTotal: 18067 M]
2021/10/03 11:01:59 [076] [qps: 263, qpsTotal: 18330] [flow: 263 M, flowTotal: 18330 M]
2021/10/03 11:02:00 [077] [qps: 277, qpsTotal: 18607] [flow: 277 M, flowTotal: 18607 M]
2021/10/03 11:02:01 [078] [qps: 275, qpsTotal: 18882] [flow: 275 M, flowTotal: 18882 M]
2021/10/03 11:02:02 [079] [qps: 284, qpsTotal: 19166] [flow: 284 M, flowTotal: 19166 M]
2021/10/03 11:02:03 [080] [qps: 278, qpsTotal: 19444] [flow: 278 M, flowTotal: 19444 M]
2021/10/03 11:02:04 [081] [qps: 276, qpsTotal: 19720] [flow: 276 M, flowTotal: 19720 M]
2021/10/03 11:02:05 [082] [qps: 281, qpsTotal: 20001] [flow: 281 M, flowTotal: 20001 M]
2021/10/03 11:02:06 [083] [qps: 275, qpsTotal: 20276] [flow: 275 M, flowTotal: 20276 M]
2021/10/03 11:02:07 [084] [qps: 279, qpsTotal: 20555] [flow: 279 M, flowTotal: 20555 M]
2021/10/03 11:02:08 [085] [qps: 270, qpsTotal: 20825] [flow: 270 M, flowTotal: 20825 M]
2021/10/03 11:02:09 [086] [qps: 280, qpsTotal: 21105] [flow: 280 M, flowTotal: 21105 M]
2021/10/03 11:02:10 [087] [qps: 279, qpsTotal: 21384] [flow: 279 M, flowTotal: 21384 M]
2021/10/03 11:02:11 [088] [qps: 284, qpsTotal: 21668] [flow: 284 M, flowTotal: 21668 M]
2021/10/03 11:02:12 [089] [qps: 278, qpsTotal: 21946] [flow: 278 M, flowTotal: 21946 M]
2021/10/03 11:02:13 [090] [qps: 275, qpsTotal: 22221] [flow: 275 M, flowTotal: 22221 M]
2021/10/03 11:02:14 [091] [qps: 287, qpsTotal: 22508] [flow: 287 M, flowTotal: 22508 M]
2021/10/03 11:02:15 [092] [qps: 282, qpsTotal: 22790] [flow: 282 M, flowTotal: 22790 M]
2021/10/03 11:02:16 [093] [qps: 279, qpsTotal: 23069] [flow: 279 M, flowTotal: 23069 M]
2021/10/03 11:02:17 [094] [qps: 280, qpsTotal: 23349] [flow: 280 M, flowTotal: 23349 M]
2021/10/03 11:02:18 [095] [qps: 277, qpsTotal: 23626] [flow: 277 M, flowTotal: 23626 M]
2021/10/03 11:02:19 [096] [qps: 270, qpsTotal: 23896] [flow: 270 M, flowTotal: 23896 M]
2021/10/03 11:02:20 [097] [qps: 285, qpsTotal: 24181] [flow: 285 M, flowTotal: 24181 M]
2021/10/03 11:02:21 [098] [qps: 286, qpsTotal: 24467] [flow: 286 M, flowTotal: 24467 M]
2021/10/03 11:02:22 [099] [qps: 285, qpsTotal: 24752] [flow: 285 M, flowTotal: 24752 M]
2021/10/03 11:02:23 [100] [qps: 286, qpsTotal: 25038] [flow: 286 M, flowTotal: 25038 M]
2021/10/03 11:02:24 [101] [qps: 279, qpsTotal: 25317] [flow: 279 M, flowTotal: 25317 M]
2021/10/03 11:02:25 [102] [qps: 285, qpsTotal: 25602] [flow: 285 M, flowTotal: 25602 M]
2021/10/03 11:02:26 [103] [qps: 282, qpsTotal: 25884] [flow: 282 M, flowTotal: 25884 M]
2021/10/03 11:02:27 [104] [qps: 272, qpsTotal: 26156] [flow: 272 M, flowTotal: 26156 M]
2021/10/03 11:02:28 [105] [qps: 276, qpsTotal: 26432] [flow: 276 M, flowTotal: 26432 M]
2021/10/03 11:02:29 [106] [qps: 283, qpsTotal: 26715] [flow: 283 M, flowTotal: 26715 M]
2021/10/03 11:02:30 [107] [qps: 287, qpsTotal: 27002] [flow: 287 M, flowTotal: 27002 M]
2021/10/03 11:02:31 [108] [qps: 285, qpsTotal: 27287] [flow: 285 M, flowTotal: 27287 M]
2021/10/03 11:02:32 [109] [qps: 277, qpsTotal: 27564] [flow: 277 M, flowTotal: 27564 M]
2021/10/03 11:02:33 [110] [qps: 272, qpsTotal: 27836] [flow: 272 M, flowTotal: 27836 M]
2021/10/03 11:02:34 [111] [qps: 276, qpsTotal: 28112] [flow: 276 M, flowTotal: 28112 M]
2021/10/03 11:02:35 [112] [qps: 262, qpsTotal: 28374] [flow: 262 M, flowTotal: 28374 M]
2021/10/03 11:02:36 [113] [qps: 281, qpsTotal: 28655] [flow: 281 M, flowTotal: 28655 M]
2021/10/03 11:02:37 [114] [qps: 280, qpsTotal: 28935] [flow: 280 M, flowTotal: 28935 M]
2021/10/03 11:02:38 [115] [qps: 280, qpsTotal: 29215] [flow: 280 M, flowTotal: 29215 M]
2021/10/03 11:02:39 [116] [qps: 273, qpsTotal: 29488] [flow: 273 M, flowTotal: 29488 M]
2021/10/03 11:02:40 [117] [qps: 274, qpsTotal: 29762] [flow: 274 M, flowTotal: 29762 M]
2021/10/03 11:02:41 [118] [qps: 259, qpsTotal: 30021] [flow: 259 M, flowTotal: 30021 M]
2021/10/03 11:02:42 [119] [qps: 276, qpsTotal: 30297] [flow: 276 M, flowTotal: 30297 M]
2021/10/03 11:02:43 [120] [qps: 285, qpsTotal: 30582] [flow: 285 M, flowTotal: 30582 M]
2021/10/03 11:02:44 [121] [qps: 282, qpsTotal: 30864] [flow: 282 M, flowTotal: 30864 M]
2021/10/03 11:02:45 [122] [qps: 283, qpsTotal: 31147] [flow: 283 M, flowTotal: 31147 M]
2021/10/03 11:02:46 [123] [qps: 284, qpsTotal: 31431] [flow: 284 M, flowTotal: 31431 M]
2021/10/03 11:02:47 [124] [qps: 280, qpsTotal: 31711] [flow: 280 M, flowTotal: 31711 M]
2021/10/03 11:02:48 [125] [qps: 287, qpsTotal: 31998] [flow: 287 M, flowTotal: 31998 M]
2021/10/03 11:02:49 [126] [qps: 280, qpsTotal: 32278] [flow: 280 M, flowTotal: 32278 M]
2021/10/03 11:02:50 [127] [qps: 281, qpsTotal: 32559] [flow: 281 M, flowTotal: 32559 M]
2021/10/03 11:02:51 [128] [qps: 289, qpsTotal: 32848] [flow: 289 M, flowTotal: 32848 M]
2021/10/03 11:02:52 [129] [qps: 279, qpsTotal: 33127] [flow: 279 M, flowTotal: 33127 M]
2021/10/03 11:02:53 [130] [qps: 281, qpsTotal: 33408] [flow: 281 M, flowTotal: 33408 M]
2021/10/03 11:02:54 [131] [qps: 290, qpsTotal: 33698] [flow: 290 M, flowTotal: 33698 M]
2021/10/03 11:02:55 [132] [qps: 281, qpsTotal: 33979] [flow: 281 M, flowTotal: 33979 M]
2021/10/03 11:02:56 [133] [qps: 286, qpsTotal: 34265] [flow: 286 M, flowTotal: 34265 M]
2021/10/03 11:02:57 [134] [qps: 280, qpsTotal: 34545] [flow: 280 M, flowTotal: 34545 M]
2021/10/03 11:02:58 [135] [qps: 262, qpsTotal: 34807] [flow: 262 M, flowTotal: 34807 M]
2021/10/03 11:02:59 [136] [qps: 285, qpsTotal: 35092] [flow: 285 M, flowTotal: 35092 M]
2021/10/03 11:03:00 [137] [qps: 277, qpsTotal: 35369] [flow: 277 M, flowTotal: 35369 M]
2021/10/03 11:03:01 [138] [qps: 279, qpsTotal: 35648] [flow: 279 M, flowTotal: 35648 M]
2021/10/03 11:03:02 [139] [qps: 282, qpsTotal: 35930] [flow: 282 M, flowTotal: 35930 M]
2021/10/03 11:03:03 [140] [qps: 283, qpsTotal: 36213] [flow: 283 M, flowTotal: 36213 M]
2021/10/03 11:03:04 [141] [qps: 278, qpsTotal: 36491] [flow: 278 M, flowTotal: 36491 M]
2021/10/03 11:03:05 [142] [qps: 281, qpsTotal: 36772] [flow: 281 M, flowTotal: 36772 M]
2021/10/03 11:03:06 [143] [qps: 281, qpsTotal: 37053] [flow: 281 M, flowTotal: 37053 M]
2021/10/03 11:03:07 [144] [qps: 263, qpsTotal: 37316] [flow: 263 M, flowTotal: 37316 M]
2021/10/03 11:03:08 [145] [qps: 278, qpsTotal: 37594] [flow: 278 M, flowTotal: 37594 M]
2021/10/03 11:03:09 [146] [qps: 281, qpsTotal: 37875] [flow: 281 M, flowTotal: 37875 M]
2021/10/03 11:03:10 [147] [qps: 277, qpsTotal: 38152] [flow: 277 M, flowTotal: 38152 M]
2021/10/03 11:03:11 [148] [qps: 286, qpsTotal: 38438] [flow: 286 M, flowTotal: 38438 M]
2021/10/03 11:03:12 [149] [qps: 279, qpsTotal: 38717] [flow: 279 M, flowTotal: 38717 M]
2021/10/03 11:03:13 [150] [qps: 282, qpsTotal: 38999] [flow: 282 M, flowTotal: 38999 M]
2021/10/03 11:03:14 [151] [qps: 284, qpsTotal: 39283] [flow: 284 M, flowTotal: 39283 M]
2021/10/03 11:03:15 [152] [qps: 275, qpsTotal: 39558] [flow: 275 M, flowTotal: 39558 M]
2021/10/03 11:03:16 [153] [qps: 271, qpsTotal: 39829] [flow: 271 M, flowTotal: 39829 M]
2021/10/03 11:03:17 [154] [qps: 283, qpsTotal: 40112] [flow: 283 M, flowTotal: 40112 M]
2021/10/03 11:03:18 [155] [qps: 272, qpsTotal: 40384] [flow: 272 M, flowTotal: 40384 M]
2021/10/03 11:03:19 [156] [qps: 279, qpsTotal: 40663] [flow: 279 M, flowTotal: 40663 M]
2021/10/03 11:03:20 [157] [qps: 280, qpsTotal: 40943] [flow: 280 M, flowTotal: 40943 M]
2021/10/03 11:03:21 [158] [qps: 276, qpsTotal: 41219] [flow: 276 M, flowTotal: 41219 M]
2021/10/03 11:03:22 [159] [qps: 277, qpsTotal: 41496] [flow: 277 M, flowTotal: 41496 M]
2021/10/03 11:03:23 [160] [qps: 278, qpsTotal: 41774] [flow: 278 M, flowTotal: 41774 M]
2021/10/03 11:03:24 [161] [qps: 282, qpsTotal: 42056] [flow: 282 M, flowTotal: 42056 M]
2021/10/03 11:03:25 [162] [qps: 278, qpsTotal: 42334] [flow: 278 M, flowTotal: 42334 M]
2021/10/03 11:03:26 [163] [qps: 287, qpsTotal: 42621] [flow: 287 M, flowTotal: 42621 M]
2021/10/03 11:03:27 [164] [qps: 280, qpsTotal: 42901] [flow: 280 M, flowTotal: 42901 M]
2021/10/03 11:03:28 [165] [qps: 273, qpsTotal: 43174] [flow: 273 M, flowTotal: 43174 M]
2021/10/03 11:03:29 [166] [qps: 275, qpsTotal: 43449] [flow: 275 M, flowTotal: 43449 M]
2021/10/03 11:03:30 [167] [qps: 279, qpsTotal: 43728] [flow: 279 M, flowTotal: 43728 M]
2021/10/03 11:03:31 [168] [qps: 283, qpsTotal: 44011] [flow: 283 M, flowTotal: 44011 M]
2021/10/03 11:03:32 [169] [qps: 278, qpsTotal: 44289] [flow: 278 M, flowTotal: 44289 M]
2021/10/03 11:03:33 [170] [qps: 280, qpsTotal: 44569] [flow: 280 M, flowTotal: 44569 M]
2021/10/03 11:03:34 [171] [qps: 286, qpsTotal: 44855] [flow: 286 M, flowTotal: 44855 M]
2021/10/03 11:03:35 [172] [qps: 279, qpsTotal: 45134] [flow: 279 M, flowTotal: 45134 M]
2021/10/03 11:03:36 [173] [qps: 270, qpsTotal: 45404] [flow: 270 M, flowTotal: 45404 M]
2021/10/03 11:03:37 [174] [qps: 278, qpsTotal: 45682] [flow: 278 M, flowTotal: 45682 M]
2021/10/03 11:03:38 [175] [qps: 283, qpsTotal: 45965] [flow: 283 M, flowTotal: 45965 M]
2021/10/03 11:03:39 [176] [qps: 276, qpsTotal: 46241] [flow: 276 M, flowTotal: 46241 M]
2021/10/03 11:03:40 [177] [qps: 273, qpsTotal: 46514] [flow: 273 M, flowTotal: 46514 M]
2021/10/03 11:03:41 [178] [qps: 285, qpsTotal: 46799] [flow: 285 M, flowTotal: 46799 M]
2021/10/03 11:03:42 [179] [qps: 282, qpsTotal: 47081] [flow: 282 M, flowTotal: 47081 M]
2021/10/03 11:03:43 [180] [qps: 281, qpsTotal: 47362] [flow: 281 M, flowTotal: 47362 M]
2021/10/03 11:03:44 [181] [qps: 275, qpsTotal: 47637] [flow: 275 M, flowTotal: 47637 M]
2021/10/03 11:03:45 [182] [qps: 275, qpsTotal: 47912] [flow: 275 M, flowTotal: 47912 M]
2021/10/03 11:03:46 [183] [qps: 272, qpsTotal: 48184] [flow: 272 M, flowTotal: 48184 M]
2021/10/03 11:03:47 [184] [qps: 280, qpsTotal: 48464] [flow: 280 M, flowTotal: 48464 M]
2021/10/03 11:03:48 [185] [qps: 253, qpsTotal: 48717] [flow: 253 M, flowTotal: 48717 M]
2021/10/03 11:03:49 [186] [qps: 259, qpsTotal: 48976] [flow: 259 M, flowTotal: 48976 M]
2021/10/03 11:03:50 [187] [qps: 267, qpsTotal: 49243] [flow: 267 M, flowTotal: 49243 M]
2021/10/03 11:03:51 [188] [qps: 284, qpsTotal: 49527] [flow: 284 M, flowTotal: 49527 M]
2021/10/03 11:03:52 [189] [qps: 278, qpsTotal: 49805] [flow: 278 M, flowTotal: 49805 M]
2021/10/03 11:03:53 [190] [qps: 282, qpsTotal: 50087] [flow: 282 M, flowTotal: 50087 M]
2021/10/03 11:03:54 [191] [qps: 284, qpsTotal: 50371] [flow: 284 M, flowTotal: 50371 M]
2021/10/03 11:03:55 [192] [qps: 277, qpsTotal: 50648] [flow: 277 M, flowTotal: 50648 M]
2021/10/03 11:03:56 [193] [qps: 275, qpsTotal: 50923] [flow: 275 M, flowTotal: 50923 M]
2021/10/03 11:03:57 [194] [qps: 281, qpsTotal: 51204] [flow: 281 M, flowTotal: 51204 M]
2021/10/03 11:03:58 [195] [qps: 289, qpsTotal: 51493] [flow: 289 M, flowTotal: 51493 M]
2021/10/03 11:03:59 [196] [qps: 271, qpsTotal: 51764] [flow: 271 M, flowTotal: 51764 M]
2021/10/03 11:04:00 [197] [qps: 274, qpsTotal: 52038] [flow: 274 M, flowTotal: 52038 M]
2021/10/03 11:04:01 [198] [qps: 274, qpsTotal: 52312] [flow: 274 M, flowTotal: 52312 M]
2021/10/03 11:04:02 [199] [qps: 283, qpsTotal: 52595] [flow: 283 M, flowTotal: 52595 M]
2021/10/03 11:04:03 [200] [qps: 278, qpsTotal: 52873] [flow: 278 M, flowTotal: 52873 M]
2021/10/03 11:04:04 [201] [qps: 278, qpsTotal: 53151] [flow: 278 M, flowTotal: 53151 M]
2021/10/03 11:04:05 [202] [qps: 280, qpsTotal: 53431] [flow: 280 M, flowTotal: 53431 M]
2021/10/03 11:04:06 [203] [qps: 280, qpsTotal: 53711] [flow: 280 M, flowTotal: 53711 M]
2021/10/03 11:04:07 [204] [qps: 281, qpsTotal: 53992] [flow: 281 M, flowTotal: 53992 M]
2021/10/03 11:04:08 [205] [qps: 286, qpsTotal: 54278] [flow: 286 M, flowTotal: 54278 M]
2021/10/03 11:04:09 [206] [qps: 279, qpsTotal: 54557] [flow: 279 M, flowTotal: 54557 M]
2021/10/03 11:04:10 [207] [qps: 271, qpsTotal: 54828] [flow: 271 M, flowTotal: 54828 M]
2021/10/03 11:04:11 [208] [qps: 280, qpsTotal: 55108] [flow: 280 M, flowTotal: 55108 M]
2021/10/03 11:04:12 [209] [qps: 283, qpsTotal: 55391] [flow: 283 M, flowTotal: 55391 M]
2021/10/03 11:04:13 [210] [qps: 279, qpsTotal: 55670] [flow: 279 M, flowTotal: 55670 M]
2021/10/03 11:04:14 [211] [qps: 283, qpsTotal: 55953] [flow: 283 M, flowTotal: 55953 M]
2021/10/03 11:04:15 [212] [qps: 279, qpsTotal: 56232] [flow: 279 M, flowTotal: 56232 M]
2021/10/03 11:04:16 [213] [qps: 277, qpsTotal: 56509] [flow: 277 M, flowTotal: 56509 M]
2021/10/03 11:04:17 [214] [qps: 281, qpsTotal: 56790] [flow: 281 M, flowTotal: 56790 M]
2021/10/03 11:04:18 [215] [qps: 279, qpsTotal: 57069] [flow: 279 M, flowTotal: 57069 M]
2021/10/03 11:04:19 [216] [qps: 283, qpsTotal: 57352] [flow: 283 M, flowTotal: 57352 M]
2021/10/03 11:04:20 [217] [qps: 265, qpsTotal: 57617] [flow: 265 M, flowTotal: 57617 M]
2021/10/03 11:04:21 [218] [qps: 287, qpsTotal: 57904] [flow: 287 M, flowTotal: 57904 M]
2021/10/03 11:04:22 [219] [qps: 280, qpsTotal: 58184] [flow: 280 M, flowTotal: 58184 M]
2021/10/03 11:04:23 [220] [qps: 277, qpsTotal: 58461] [flow: 277 M, flowTotal: 58461 M]
2021/10/03 11:04:24 [221] [qps: 277, qpsTotal: 58738] [flow: 277 M, flowTotal: 58738 M]
2021/10/03 11:04:25 [222] [qps: 281, qpsTotal: 59019] [flow: 281 M, flowTotal: 59019 M]
2021/10/03 11:04:26 [223] [qps: 265, qpsTotal: 59284] [flow: 265 M, flowTotal: 59284 M]
OnClose: 127.0.0.1:35684 <nil>
OnClose: 127.0.0.1:35690 EOF
OnClose: 127.0.0.1:35688 broken pipe
OnClose: 127.0.0.1:35686 <nil>
OnClose: 127.0.0.1:35680 broken pipe
OnClose: 127.0.0.1:35694 <nil>
OnClose: 127.0.0.1:35692 <nil>
OnClose: 127.0.0.1:35696 <nil>
OnClose: 127.0.0.1:35698 broken pipe
OnClose: 127.0.0.1:35682 <nil>
2021/10/03 11:04:27 [224] [qps: 168, qpsTotal: 59452] [flow: 168 M, flowTotal: 59452 M]
2021/10/03 11:04:28 [225] [qps: 0, qpsTotal: 59452] [flow: 0 M, flowTotal: 59452 M]
2021/10/03 11:04:29 [226] [qps: 0, qpsTotal: 59452] [flow: 0 M, flowTotal: 59452 M]
2021/10/03 11:04:30 [227] [qps: 0, qpsTotal: 59452] [flow: 0 M, flowTotal: 59452 M]
2021/10/03 11:04:31 [228] [qps: 0, qpsTotal: 59452] [flow: 0 M, flowTotal: 59452 M]
2021/10/03 11:04:32 [229] [qps: 0, qpsTotal: 59452] [flow: 0 M, flowTotal: 59452 M]
OnOpen: 127.0.0.1:35700
OnOpen: 127.0.0.1:35702
OnOpen: 127.0.0.1:35704
OnOpen: 127.0.0.1:35706
OnOpen: 127.0.0.1:35708
OnOpen: 127.0.0.1:35710
OnOpen: 127.0.0.1:35712
OnOpen: 127.0.0.1:35714
OnOpen: 127.0.0.1:35716
OnOpen: 127.0.0.1:35718
2021/10/03 11:04:33 [230] [qps: 164, qpsTotal: 59616] [flow: 164 M, flowTotal: 59616 M]
2021/10/03 11:04:34 [231] [qps: 261, qpsTotal: 59877] [flow: 261 M, flowTotal: 59877 M]
2021/10/03 11:04:35 [232] [qps: 272, qpsTotal: 60149] [flow: 272 M, flowTotal: 60149 M]
2021/10/03 11:04:36 [233] [qps: 270, qpsTotal: 60419] [flow: 270 M, flowTotal: 60419 M]
2021/10/03 11:04:37 [234] [qps: 279, qpsTotal: 60698] [flow: 279 M, flowTotal: 60698 M]
2021/10/03 11:04:38 [235] [qps: 268, qpsTotal: 60966] [flow: 268 M, flowTotal: 60966 M]
2021/10/03 11:04:39 [236] [qps: 274, qpsTotal: 61240] [flow: 274 M, flowTotal: 61240 M]
2021/10/03 11:04:40 [237] [qps: 281, qpsTotal: 61521] [flow: 281 M, flowTotal: 61521 M]
2021/10/03 11:04:41 [238] [qps: 275, qpsTotal: 61796] [flow: 275 M, flowTotal: 61796 M]
2021/10/03 11:04:42 [239] [qps: 274, qpsTotal: 62070] [flow: 274 M, flowTotal: 62070 M]
2021/10/03 11:04:43 [240] [qps: 274, qpsTotal: 62344] [flow: 274 M, flowTotal: 62344 M]
2021/10/03 11:04:44 [241] [qps: 280, qpsTotal: 62624] [flow: 280 M, flowTotal: 62624 M]
2021/10/03 11:04:45 [242] [qps: 270, qpsTotal: 62894] [flow: 270 M, flowTotal: 62894 M]
2021/10/03 11:04:46 [243] [qps: 272, qpsTotal: 63166] [flow: 272 M, flowTotal: 63166 M]
2021/10/03 11:04:47 [244] [qps: 272, qpsTotal: 63438] [flow: 272 M, flowTotal: 63438 M]
2021/10/03 11:04:48 [245] [qps: 271, qpsTotal: 63709] [flow: 271 M, flowTotal: 63709 M]
2021/10/03 11:04:49 [246] [qps: 267, qpsTotal: 63976] [flow: 267 M, flowTotal: 63976 M]
OnClose: 127.0.0.1:35706 <nil>
OnClose: 127.0.0.1:35712 <nil>
OnClose: 127.0.0.1:35710 <nil>
OnClose: 127.0.0.1:35714 EOF
OnClose: 127.0.0.1:35708 <nil>
OnClose: 127.0.0.1:35700 <nil>
OnClose: 127.0.0.1:35704 <nil>
OnClose: 127.0.0.1:35716 <nil>
OnClose: 127.0.0.1:35702 broken pipe
OnClose: 127.0.0.1:35718 <nil>
2021/10/03 11:04:50 [247] [qps: 181, qpsTotal: 64157] [flow: 181 M, flowTotal: 64157 M]
^C2021/10/03 11:04:51 exit
2021/10/03 11:04:51.663 [ERR] Poller[NB_LISTENER_0] Accept failed: accept tcp 127.0.0.1:8888: use of closed network connection, exit...
2021/10/03 11:04:51.664 [INF] Gopher[NB] stop
from nbio.
I need your samples, then I'll look into it.
from nbio.
This example here is similar to what I need and avoids the memory usage explosion. With this, I see the memory usage stop at a ~fix point and not grow beyond that regardless of stop/starting clients.
from nbio.
Related Issues (20)
- Upgrader 是否可复用? HOT 3
- Invalid WebSocket frame: invalid UTF-8 sequence HOT 5
- how to proxy via nginx, i need to use SSL(wss) HOT 3
- 对标netty的nio吗? HOT 2
- 請教關於TLS websocket的連線問題 HOT 7
- Write errors after 65k web socket connections writing every 2 sec HOT 7
- 请问,这个库对每个用户的websocket连接是单独开启一个协程吗? HOT 15
- 请教下,这个库可以进行TLS双向验证吗? HOT 3
- 请教 在OnData中做一个并发安全的疑惑 HOT 1
- tcp raw 有没有办法只保留部分数据,其他数据不进缓冲区 HOT 10
- 你好大佬,看了你的方法,有一点建议,不知道合理不合理,希望你能看到,给个回复 HOT 17
- 大佬,很感谢分享,我在使用的时候有一些问题,是否可以请教下 HOT 6
- 大老您好,请教下和fasthttp的结合 HOT 7
- How to use proxy for websocket connection HOT 5
- Can this library be used as a websocket client? HOT 6
- 向大佬求助,如何用这个库写出生产者和消费者的代码结构? HOT 35
- [advice]建议再多一层上层的封装(独立一个package,依赖这个库) HOT 4
- How to run a worker that sends ping/pong as a text message like pingHandler and pongHandler upgrader HOT 15
- 请问多个包合并读取应该如何处理? HOT 3
- How to check that websocket conn is open or closed? can we export the internal variable of isClosed? HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nbio.