热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IIS,Asp.NET管道和并发-IIS,Asp.NETpipelineandconcurrency

Imwonderinghowtheconcurrencyinawebapplicationactuallyworks.Ivereadseveralarticlesand

I'm wondering how the concurrency in a web application actually works. Ive read several articles and to my understanding multiple instances of HttpApplication would be working at the same time. Now, I created a simple web app to test concurrency and put the following to global.asax:

我想知道Web应用程序中的并发性是如何实际工作的。我已经阅读了几篇文章,据我所知,HttpApplication的多个实例将同时工作。现在,我创建了一个简单的Web应用程序来测试并发性,并将以下内容放到global.asax中:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Response.Write("Request started: " + DateTime.Now);
    System.Threading.Thread.Sleep(10000);
    Response.Write("
"); Response.Write("Request ended: " + DateTime.Now); Response.End(); }

I was expecting that if I browse to the web app root in several browser tabs at nearly the same time, they would start and stop concurrently. However, it seems that they don't. Second tab start time is same as first time end time. I then tested by having this same code in an httpmodule or default.aspx page_load and got the same result.

我期待如果我几乎在同一时间浏览几个浏览器标签中的Web应用程序根目录,它们将同时启动和停止。但是,似乎他们没有。第二个标签开始时间与第一个结束时间相同。然后我通过在httpmodule或default.aspx page_load中使用相同的代码进行测试,得到了相同的结果。

What is going on here? Why aren't the requests being served parallel?

这里发生了什么?为什么请求并行服务?

Edit: I'm placing my understanding mainly to two articles:

编辑:我将理解主要放在两篇文章中:

http://msdn.microsoft.com/en-us/magazine/cc188942.aspx says "If multiple requests targeting the same application arrive simultaneously, multiple HttpApplication objects will be used."

http://msdn.microsoft.com/en-us/magazine/cc188942.aspx说“如果针对同一个应用程序的多个请求同时到达,将使用多个HttpApplication对象。”

and http://www.code-magazine.com/article.aspx?quickid=0511061&page=5 has an example for an aspx page doing basically what I tested, with comment "Simulate slow request so we can see multiple requests side by side." next to Thread.Sleep call

和http://www.code-magazine.com/article.aspx?quickid=0511061&page=5有一个aspx页面的例子基本上做我测试的,注释“模拟慢请求所以我们可以看到多个请求并排“。在Thread.Sleep调用旁边

It is possible that I'm completely misunderstanding something... but what?

我可能完全误解了什么......但是什么?

http://www.code-magazine.com/article.aspx?quickid=0511061&page=5

3 个解决方案

#1


3  

Each request that arrives is routed to a separate HttpApplication object. The HttpApplication object is either created from scratch or allocated from a pool. The maximum number of HttpApplication objects created is limited by the maximum number of threads available. In ASP.NET 1.x I think the default was 20 or so. Under ASP.NET 2.0 this limit is managed dynamically.

到达的每个请求都将路由到单独的HttpApplication对象。 HttpApplication对象可以从头开始创建,也可以从池中分配。创建的HttpApplication对象的最大数量受可用线程的最大数量限制。在ASP.NET 1.x中,我认为默认值是20左右。在ASP.NET 2.0下,此限制是动态管理的。

You would need create enough requests to exhaust the ASP.NET thread pool before seeing your application start to falter.

在看到应用程序开始动摇之前,您需要创建足够的请求以耗尽ASP.NET线程池。

What the comment in the Code article means is not that his code is bottlenecking the server, he's using it as a way to be able to see the state multiple requests side by side such as different thread ID's.

Code文章中的注释意味着他的代码不是瓶颈服务器,他正在使用它作为一种方式,能够并排查看状态多个请求,例如不同的线程ID。

#2


3  

Heh. The problem was Google Chrome. I opened two tabs in it and it seems when they point to same url that the requests get sent sequentially, one after the other has completed!

嘿。问题是Google Chrome。我在其中打开了两个标签,看起来当它们指向相同的网址时,请求按顺序发送,一个接一个地完成!

Thanks for ideas though!

谢谢你的想法!

#3


1  

Why don't you modify the sample to print the thread ID? That will tell you if multiple threads are serving the requests concurrently. I bet it is.

为什么不修改样本来打印线程ID?这将告诉您多个线程是否同时为请求提供服务。我敢打赌。


推荐阅读
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
author-avatar
admin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有