|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。哀求|哀求处置ASP哀求
申明了一个典范的ASP哀求的处置流程。该哀求由WAM工具举行初始化处置。该WAM工具再把它发送给ASP-RunTime。ASP-RunTime经由过程创立一个外部页面临象对其举行呼应。
WAM工具是一个自在线程工具。当它挪用诸如ASP.DLL的ISAPI扩大时,它利用由IIS-RunTime保护的线程池所分派的MTA模子的线程。
创立ISAPI扩大时面临的一个辣手的成绩是,怎样处置由这一MTA线程池所带来的线程并发与同步的成绩。ASP-RunTime经由过程在运转ASP剧本前把每一个ASP哀求切换至一个单线程单位(STA),从而使成绩失掉简化。ASP-RunTime办理一个自力的STA帮助线程池(在背景,ASP实践上经由过程利用COM+线程池来完成这一点)。ASP计划师创立了这类线程池计划,以在并发和资本使用之间供应一种优化均衡,同时打消对程序员完成同步的必要。
申明了ASP-RunTime是如何把每一个哀求从MTA线程切换到STA线程的。ASP-RunTime调剂机制把每一个哀求都放到一其中央哀求行列中。由ASP办理的线程池中的STA线程监督该行列并以先辈先出体例处置哀求。注重,这一线程池的巨细是静态变更的。ASP-RunTime在通讯岑岭期会发生分外的线程,而在通讯较少时开释线程。
切换到STA线程无效地办理了并发性成绩,可是如许关于功能也有分明的影响。在一个独自的MTA线程中队每一个哀求举行处置的ISAPI扩大DLL都能供应更快的呼应工夫。
IIS供应了一种办法以对STA线程池和哀求行列的最年夜尺寸举行设置。线程池的巨细由IIS元数据库中AspProcessorThreadMax主键把持。该主键的缺省设置是每历程每处置器25(批评:此数字最好能找到微软的相干文档证实一下。有人说这个数量是10个/CPU)。也就是说,在一台到处理器盘算机中,每一个处置ASP的历程能够最多有100个帮助线程。除非对换整线程池的相干成绩已思索成熟,不然应当制止改动该键值。注重,你不克不及利用InternetServerManager来改动这个设置。必需利用办理剧本大概VB使用来举行修正。
IIS为ASP哀求行列设置了一个最年夜容量。缺省情形下,ASP-RunTime同意行列最多包容3000个哀求(微软的另外一篇文档指出,这个行列只能包容500个哀求)。一旦超越,厥后进进的ASP哀求就会被回绝,前往毛病信息为“ServerTooBusy”。
可使用IIS办理工具和ADSI来编程修正AspProcessorThreadMax主键和AspRequestQueueMax主键。比方,在一个StandardEXE项目中,援用ActiveDS范例库,编写以下代码:
DimMyWebServerAsActiveDS.IADs
SetMyWebServer=GetOject(“IIS://Localhost/W3SVC”)
MyWebServer.Put“AspProcessorThreadMax”,30
MyWebServer.Put“AspRequestQueueMax”,1500
MyWebServer.SetInfo
上面复杂总结一下在单处置器盘算机上以缺省体例安装的IIS中,ASP线程池是怎样事情的。该线程池关于每一个处置器有25个STA帮助线程可用。当一个哀求抵达时,就被放到哀求行列中,ASP-RunTime从线程池中调剂一个余暇STA线程,假如存在一个可用的话(注重,这类计划同意线程池中的任何线程都能够对哀求举行处置)。假如没有余暇的帮助线程,哀求就到场行列。只需行列没有到达缺省最年夜容量,一切哀求都将失掉处置。
来自TedPattison的《ProgrammingDistributedApplicationwithVisualBasic6.0》
</p>ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。 |
|