performance - Web 应用程序中的并发

标签 performance web-applications concurrency

因此,最近几乎所有平台提供商都非常重视提供新的工具/语言结构以实现更好的并发性。这也是为什么许多函数式编程语言的想法被集成到 C#、Java 等主流语言中的原因之一。

尽管这些在今天特别是随着多核 CPU 的引入而变得很有意义,但我想知道如何在 Web 应用程序领域中使用这些。在 Web 应用程序中,很多并发是由 Web 服务器本身管理的,我很少看到在网页内实现多线程。 AJAX 还启用了“pagelets”之类的范例来进一步提供帮助。

Web 应用程序通常包括快速获取结果,到目前为止,我们使用了许多策略,如缓存、冗余等来实现这一目标。如果有一些计算密集型的事情,它必须离线发生(并且客户端可以稍后查询结果或可以实现回调)。

并发类型已经在许多库/框架中实现,这些库/框架通常用于网络应用程序,如数据库、memcached 等框架中的多重获取。

我找不到很多可以在 Web 应用程序上下文中使用最近的并发平台和库的示例场景。所以我想知道它们在网络域中是否有意义。

最佳答案

由于默认情况下 Web 应用程序是并发的,因此您不太可能在 Web 应用程序中使用新的并发机制(例如用于 .NET 的 TPL 或 PLINQ)。您通常不会在高负载的 Web 服务器上获得任何好处(您可以通过减慢另一个请求来加速一个请求)。但是,当您有一个专用 Web 服务器在其大部分 CPU 周期(同时具有多个内核)不提供服务时,这些技术可能很有用。

[更新:]
刚读了new articleParallel Programming with .NET blog .这里有两个有趣的引用:

In most cases, and in particular for Web applications with heavy usage, it is probably not necessary to introduce extra parallelism since adding more work items will only result in competition for CPU time and ultimately reduce request throughput.



和:

Web applications that need to perform expensive computations may still benefit from parallelism if the latency of an individual request is more important than overall request throughput.



我想这回答了你的问题。

关于performance - Web 应用程序中的并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220981/

相关文章:

python - Numba 不加速功能

r - 如何减少从插入符号传递给 RF 的默认 ntree=500 参数?

javascript - 如何通过js启用/禁用浏览器历史记录

security - 保护 Tomcat Webapps 文件夹免受直接用户访问

.NET - 字典锁定与 ConcurrentDictionary

c# - 异步 WPF 命令

mysql - 索引查询执行从几秒跳到几小时,数据增加最少

eclipse - JRebel 不发布 webapp 文件夹

scala - 为什么 Akka Actor 的默认行为是一个接一个地处理消息?

algorithm - 从/向文件读取/写入 std::unordered_map 的更快方法