我编写了一个 Netty HTTP 服务器。
我正在找出处理 Http 请求的正确方法
选项:(1. Netty 处理程序 2. LMAX 干扰器)。
我在某处读到 LMAX Disruptor 对于异步事件处理很有用。
但在负载测试之后,使用 LMAX Disruptor 进行事件处理的服务器提供的吞吐量比 Netty Handler 低 70%。而且延迟也增加了 200%。
我在 8 核 16GB 盒子上获得了 30k qps。使用 Lmax Disruptor 后,我获得了 10k qps。
目前我的服务只是读取 Json 请求并返回静态响应。我只是想比较目前的原始性能。
我正在从 SimpleChannelInboundHandler 读取 HttpRequest 并将其发送到 LMAX Disruptor 事件处理程序,并释放其配置如下所述的 Netty Worker 处理程序:
Netty IO 线程:24 和工作线程:48
Disruptor disruptor = new Disruptor<>(new EventFactory(), 65536, DaemonThreadFactory.INSTANCE);
要从破坏者那里获得性能,您首先需要有机械同情心......然后确保:
为了获得更准确的答案,请提供一些有关如何创建干扰器以及您的处理处理程序是什么样子的基本信息。