0

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

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

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

如果您碰巧在此线程上进一步工作并有更好的结果,请告诉我。或者请看看我是否在配置中犯了任何错误。

4

1 回答 1

1

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

纤程的好处(对于异步 servlet 或其他异步框架,尽管编程起来更麻烦)是您能够支持更多的并发请求,而不是您的机器可以支持的线程(比如超过 15k ),这通常意味着您的请求率非常高和/或您的请求需要大量的处理时间。另请注意,通常如此高的速率需要调整 OS 网络堆栈以允许更多打开的文件描述符、更快的连接周转等。

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

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

于 2016-02-16T06:26:58.273 回答