wangzihaogithub / spring-boot-protocol

springboot功能扩充-netty动态协议,可以支持各种网络协议的动态切换(单端口支持多个网络协议).支持mmap,sendfile零拷贝,http请求批量聚合
https://zihaoapi.cn
Apache License 2.0
117 stars 63 forks source link

关于线程池,大佬求解答。。 #22

Closed fzdwx closed 2 years ago

fzdwx commented 2 years ago

你好,为什么说用了线程池来执行http runnable比只用event loop 的qps 高?

我以为,把http runnable提交到线程池就是直接返回了,然后继续提交下一个http runnable,应该更高?

wangzihaogithub commented 2 years ago

如果有阻塞代码的话, 用线程池qps高. 如果没阻塞代码的话, 在 netty的 eventloop 里执行qps高.

因为增加qps的核心体现在快速把数据写到网卡 与 快速从网卡读到请求.

spring-boot-protoco对这两种方式都支持.

建议如果要高性能代码的话, 可以把阻塞代码先写内存, 然后批量持久化, 如果要保证事物可以用WAL. 这样QPS就非常高了,可以达到每秒几万

wangzihaogithub commented 2 years ago

提交http runnable不是本质, 本质是 http runnable过程中会把数据写到网卡, runnable不切换线程, 直接写网卡效率更高

fzdwx commented 2 years ago

提交http runnable不是本质, 本质是 http runnable过程中会把数据写到网卡, runnable不切换线程, 直接写网卡效率更高

感谢解答,有概念了!