如何让 quasar fibers 与 JSF 一起最佳工作?

How do I get quasar fibers working optimally with JSF?

如何让 quasar 与 JSF 一起最佳工作?我在 FiberHttpServlet 的线路上创建了一个与 Comsat Quasar 集成的 JSF 项目,但没有看到任何数量上的改进。

我的项目在这里:https://github.com/sanketsw/Quasar_JSF_Demo

不幸的是,当从 JMeter 进行测试时(服务器上限为 50 个线程,JMeter 测试 运行 3000 个用户),Fiber 未发现有任何积极影响。响应与 javax.faces.webapp.FacesServlet 完全相同,最多 500 个用户。对于3000个用户,请求失败的错误率更高,响应时间也明显高于正常请求成功的FacesServlet。

如果您碰巧进一步处理此线程并获得更好的结果,请告诉我。或者请看我是不是配置有误

使用纤程而不是线程来为 HTTP 请求提供服务的好处是,与资源少得多的线程相比,您可以拥有更多的活动纤程,因此您可能会看到并发性增加而不是平均响应方面的改进低并发时。如果您 运行 只有 50 个并发请求(这是我从您的描述中了解到的,无法在 GitHub 项目中找到基准脚本),您可以只使用具有线程池大小的常规基于线程的 servlet > 50 并且您甚至可能会获得更好的延迟(因为您没有延迟请求完成并且没有使用所有需要的机制来跟踪您的 servlet 容器内的请求,也没有潜在的线程切换与缓存影响等)。

纤程的好处(异步 servlet 或其他异步框架,虽然编程起来要麻烦得多)是你能够支持更多的并发请求,比你的盒子可以支持的线程更多(比如说超过 15k),这通常意味着您正面临极高的请求率 and/or 您的请求需要大量的处理时间。另请注意,通常如此高的速率需要调整 OS 网络堆栈以允许打开更多文件描述符、更快的连接周转等。

另请注意,最近发布的 Comsat 0.6.0 改进了 servlet 和 web actor 的性能。无论如何,Comsat servlet 依赖于您 运行 它们所在的 servlet 容器的 servlet 异步功能,因此如果该实现有问题或效率不高,这也会转移到 Comsat servlet。我使用 Undertow 获得了不错的结果(只需等待第一个请求完成,然后再提供服务,否则您将遇到错误)。

注意:我是平行宇宙团队的一员。