haskell - 对于高性能应用服务器,我应该选择Yesod的Warp和snap-server中的哪一个?

标签 haskell yesod haskell-snap-framework happstack

我在 Yesod 的主页上看到过基准测试,但它们主要针对静态文件。而且 Snap 网站上的基准测试已经过时了。

我正在尝试将 Haskell 模块公开为服务。服务器的逻辑是接收 JSON 格式的函数名称和参数,调用 Haskell 函数并再次以 JSON 形式传递输出。引用透明性保证了线程安全以及内存和缓存函数的能力。

如果我要支持 2k - 5k 数量级的并发连接,我将如何实现它?这种方法的可扩展性如何?

最佳答案

我强烈建议在 Warp/Yesod 和 Snap 之间进行选择,具体取决于哪个系统为您提供了用于创建应用程序的最佳工具集。 Warp 和 Snap 都使用相同的底层 GHC I/O 管理器,并且都经过高度优化。如果为每个系统编写良好的应用程序,执行任何重要的操作,却显示出显着的性能差距,我会感到惊讶。

你的最后一段有点含糊,但我认为 Warp 或 Snap 的基本答案就是只编写你的代码,I/O 管理器将尽可能地扩展。如果您确实发现并发连接是瓶颈,您可以考虑尝试预 fork 技术,使用 GHC 7.8 (尚未发布,但有很大改进的 I/O 管理器),或使用多个服务器.

关于haskell - 对于高性能应用服务器,我应该选择Yesod的Warp和snap-server中的哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593399/

相关文章:

haskell - Haskell 中的无限(最终周期性)HList

haskell - Haskell 中的 <|> 是什么?

haskell - "zipping"相同长度的元组是否有 Haskell 镜头功能?

haskell - 反转折叠

sql - `?` SQL `IN` 条件的占位符,具有持久性 's ` rawSql`

haskell - 如何在 Yesod 中更改子站点的 URL?

haskell - Snap 0.9 路由行为

haskell - 如何在生产中运行 Snap haskell webapp?

haskell - 在两个不同的模块中定义函数或解决方法

authentication - 如何在 defaultLayout 中嵌入 BrowserID 登录按钮