neoneo-go/pkg/network
Roman Khimov f78bd6474f network: handle incoming message in a separate goroutine
Network communication takes time. Handling some messages (like transaction)
also takes time. We can share this time by making handler a separate
goroutine. So while message is being handled receiver can already get and
parse the next one.

It doesn't improve metrics a lot, but still I think it makes sense and in some
scenarios this can be more beneficial than this.

e41fc2fd1b, 4 nodes, 10 workers

RPS    6732.979 6396.160 6759.624 6246.398 6589.841 ≈ 6545   ± 3.02%
TPS    6491.062 5984.190 6275.652 5867.477 6360.797 ≈ 6196   ± 3.77%
CPU %    42.053   43.515   44.768   40.344   44.112 ≈   43.0 ± 3.69%
Mem MB 2564.130 2744.236 2636.267 2589.505 2765.926 ≈ 2660   ± 3.06%

Patched:

RPS    6902.296 6465.662 6856.044 6785.515 6157.024 ≈ 6633   ± 4.26% ↑ 1.34%
TPS    6468.431 6218.867 6610.565 6288.596 5790.556 ≈ 6275   ± 4.44% ↑ 1.28%
CPU %    50.231   42.925   49.481   48.396   42.662 ≈   46.7 ± 7.01% ↑ 8.60%
Mem MB 2856.841 2684.103 2756.195 2733.485 2422.787 ≈ 2691   ± 5.40% ↑ 1.17%
2021-08-06 19:37:37 +03:00
..
capability *: enable godot linter and fix all its warnings 2021-05-12 23:17:03 +03:00
extpool *: increase GAS for verification 2021-07-14 10:27:09 +03:00
metrics cli,pkg: use zap.Logger 2020-01-10 11:14:27 +03:00
payload rpc: allow to track notary requests via Notification subsystem 2021-06-01 16:29:04 +03:00
blockqueue.go network: restrict block queue size 2020-09-02 17:04:49 +03:00
blockqueue_test.go block: replace Base with Header 2021-03-10 13:38:44 +03:00
compress.go network: handle length mismatch in decompression routine 2020-08-03 22:38:55 +03:00
discovery.go *: enable godot linter and fix all its warnings 2021-05-12 23:17:03 +03:00
discovery_test.go network: optimize waiting in test 2021-07-08 11:14:35 +03:00
helper_test.go *: drop unused structure fields 2021-05-12 19:41:23 +03:00
message.go network: use optimized decoder for transactions 2021-08-04 23:49:07 +03:00
message_string.go network: replace ConsensusType with ExtensibleType 2021-01-22 10:38:33 +03:00
message_test.go network: drop Network from Message 2021-03-26 13:45:18 +03:00
notary_feer.go core: introduce mempool notifications 2021-02-02 22:01:32 +03:00
peer.go network: support non-blocking broadcast 2020-12-25 14:36:52 +03:00
prometheus.go monitoring: add prometheus monitoring 2019-10-29 20:51:17 +03:00
server.go network: fix Ping messages 2021-08-06 11:28:09 +03:00
server_config.go network: limit message number from the same sender 2021-05-12 10:52:11 +03:00
server_test.go *: fix whitespace errors 2021-05-12 22:51:41 +03:00
tcp_peer.go network: handle incoming message in a separate goroutine 2021-08-06 19:37:37 +03:00
tcp_peer_test.go protocol: add capabilities to version payload 2020-05-27 19:01:14 +03:00
tcp_transport.go network: don't log transport errors on exit 2021-07-08 10:40:54 +03:00
transport.go protocol: add capabilities to version payload 2020-05-27 19:01:14 +03:00