什么是应用程序池?

约翰·梅里诺

我正在阅读这篇文章:

http://www.modrails.com/documentation/Architectural%20overview.html#web_app_models

它讨论了Phusion Passenger如何扩展Apache2以充当应用程序服务器。当HTTP请求进入时,Phusion Passenger模块将检查该请求是否应由Phusion Passenger服务的应用程序处理。如果是这样,则该模块会在必要时为应用程序生成一个进程。将请求转发到应用程序进程,并将响应转发回客户端。为了增强生成过程,passenger充当生成服务器,将Ruby on Rails框架代码和应用程​​序代码缓存在内存中。

这样,每次收到新请求时,在生成流程时,它都会引用缓存的代码并快速生成流程。但是,尽管缓存了,但与http请求相比,生成仍然很昂贵。因此,使用了一个应用程序池。我不知道什么是应用程序池。它是这样说的:

生成的应用程序实例保持活动状态,并将它们的句柄存储在此池中,从而允许每个应用程序实例稍后重用。因此,乘客具有非常好的平均情况表现。

这意味着“保持生命”及其“句柄存储在此池中”是什么意思。我认为这就是缓存的重点-保持数据活动以备后用。所以我看不出这有什么不同。

你好

术语“保持活动状态”及其“句柄存储在此池中”是指与缓存不同的内容。

快取

缓存是一种机制,可以将昂贵的数据保存在快速访问的位置,以供日后重用。您会看到它在很多地方都使用过,例如:

  • 在数据库中查找内容
  • 解析服务器的IP地址
  • 从硬盘驱动器访问文件

汇集

他们在Phusion Passenger文档中所指的“保持有效”是指强制应用程序无限期地保持运行状态,以便我们节省启动应用程序所需的时间。

在处理Web请求时,您希望应用程序尽可能地响应。如果应用程序启动需要花费几秒钟,而从数据库请求数据需要花费几秒钟,那么您将无法创建响应式Web应用程序。

因此,要做的是构建一个轻量级的前端,该前端将接受连接,然后始终保持应用程序的多个实例正常运行,然后前端将执行以下操作:

  1. 将传入连接分配给已运行的应用程序实例之一
  2. 从这个正在运行的实例中获取结果
  3. 将结果传回给客户
  4. 将正在运行的应用程序实例重新置于“准备处理”状态

例子

我喜欢使用在杂货店拥有多个收银机的示例。每个通道都是应用程序服务器的一个实例,每个通道一次只能处理一个用户,但是它们可以一起为多个用户提供服务。

如果您看一下Ruby的Mongrel HTTP服务器,它的设计使其可以在池中以几乎相同的方式运行。

一种流行的配置是使用mod_proxy_balancer结合几个Mongrel实例,将Apache HTTP Server 2.2作为负载均衡器运行。每个Mongrel实例将在单独的TCP端口上运行,该端口通过mongrel_cluster管理实用程序进行配置。直到最近,Twitter还是这种配置的显着实例。

Mongrel能够在不使用任何其他Web服务器的情况下为Ruby on Rails供电的站点提供服务,尽管作为单线程应用程序,此配置不适合除轻负载之外的所有负载。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iis应用程序池与umbraco过度使用内存

来自分类Dev

IIS 7中的应用程序池状态

来自分类Dev

Sitecore-无应用程序池回收

来自分类Dev

应用程序池存储在哪里

来自分类Dev

IIS应用程序池,内存管理

来自分类Dev

当前应用程序池名称

来自分类Dev

我如何知道应用程序池是否是远程启动的?

来自分类Dev

使用强制选项在Powershell中创建应用程序池

来自分类Dev

回收bat文件中的几个应用程序池

来自分类Dev

IIS应用程序池回收和本机程序集

来自分类Dev

Sharepoint-模拟应用程序池标识

来自分类Dev

PHP应用程序中的Guzzle池

来自分类Dev

ImageResizer重新启动应用程序池

来自分类Dev

IIS PowerShell应用程序池设置为“ NetworkService”帐户

来自分类Dev

对WebClient请求使用应用程序池凭据

来自分类Dev

如何确定应用程序池是否已终止或暂停?

来自分类Dev

IISExpress应用程序池回收

来自分类Dev

当应用程序池在ASP.NET MVC中回收时会发生什么?

来自分类Dev

检查IIS应用程序池的状态

来自分类Dev

获取应用程序池的标识

来自分类Dev

应用程序池经常关闭,需要回收

来自分类Dev

在请求之间共享应用程序线程池

来自分类Dev

主线程在基于线程池/任务的应用程序中做什么?

来自分类Dev

应用程序池存储在哪里

来自分类Dev

为什么我的应用程序不使用声音池启动新活动?

来自分类Dev

当前应用程序池名称

来自分类Dev

IIS应用程序池回收和本机程序集

来自分类Dev

通过应用程序池隔离进程

来自分类Dev

跟踪应用程序池用户帐户

Related 相关文章

热门标签

归档