通辽市北京网站建设wordpress做成app
通辽市北京网站建设,wordpress做成app,三亚今天最新通知,网站一个页面多少钱正确而合理的配置IIS是构建一个高性能和高可扩展应用的基础。虽然很多的时候采用默认的配置就已经可以处理一般的情况#xff0c;但是随着站点应用的发展#xff0c;特别是当访问量稍微大一点的时候#xff0c;就会暴露出很多我们认为的“奇奇怪怪”的问题。 所以#xff0… 正确而合理的配置IIS是构建一个高性能和高可扩展应用的基础。虽然很多的时候采用默认的配置就已经可以处理一般的情况但是随着站点应用的发展特别是当访问量稍微大一点的时候就会暴露出很多我们认为的“奇奇怪怪”的问题。 所以对IIS以及相关的配置有一个全面的理解是非常有必要的不仅仅可以很好的帮助我们来搭建IIS宿主环境而且还对我们应用代码的编写以更多的指导而且也是性能优化中一个非常重要的组成部分。 我们首先会讲述IIS的一些知识和它的架构这是理解后续内容的基础。 本篇的议题如下 IIS 与应用程序池 初窥IIS的内核 Http.sys解析 对于一台应用程序服务器而言它的两个比较重要的功能就是 1. 监听从客户端发送来的Http请求 2. 调用请求处理程序从监听者那里获取请求然后处理并且把响应发送给监听者然后由监听者发送回给客户端。 为了使得IIS 6的性能和可伸缩性最大Microsoft将HTTP的监听者放在了操作系统的内核模式中同时Microsoft也重写了请求处理程序使得所有的应用程序有着更好的独立性并且也加入了很多配置和特性使得性能和稳定性有了大幅度的提升。 首先我们就来讲讲“内核模式”与“用户模式”的一些概念因为后面的文章会大量的用到这些概念。 所谓的内核模式就是Windows内部核心的操作在内核模式中运行的进程有着很高的优先级可以直接访问硬件以及系统底层的一些数据例如管理线程进程管理I/O设备的驱动等。 用户模式就是除了内核模式以外的操作例如位来自用户应用程序的请求提供服务包括IISSQL Server等。所有用户模式的应用程序通过运行在内核模式的执行层访问资源例如如果应用程序要进行磁盘的I/O那么该请求就会提交到内核模式的执行层由它来执行请求并且将结果返回给发出请求的用户模式的进程。 Http请求监听者(HTTP.sys)是运行在内核模式中的所以允许它已经非常高的优先级运行并且还可以直接的访问网络接口这样极大的提升了性能所以这样使得IIS对HTTP的请求的响度度也大大的提高。 下面我们就开始进入今天的第一个议题。 IIS 与应用程序池 从IIS6引入了应用程序池的概念应用程序池使得每个Web程序都在一个独立的环境中运行。一个或者多个Web应用可以加入到一个应用程序池中每一个应用程序池都在一个单独的进程中运行这就意味着即使一个应用程序池崩溃了也不会影响其他的应用程序池。 出了独立性以外应用程序池还允许我们进行更多的配置例如配置应用程序池运行中的进程运行是的标识即以何种身份进行运行还可配置.NET Framework的版本健康检查以及与高性能高可用的一些设置。 对于不同的Web应用程序其性能稳定性等都是不一样的所以正确的配置会对站点的影响非常大其实很多的时候我们采用了很多的默认的配置。 在每一个应用程序池中接受至少有一个运行的进程来接受与处理请求我们就将这个进程称之为“工作进程”。当一个发送到特性的URL请求被IIS接受之后请求就会被转发给正确的应用程序池然后被池中的工作进程处理。 一个应用程序池可以配置为运行多个工作进程这个时候我们就将这个情况称为“Web Garden”中文的意思翻译出来就变味了。当一个池被配置称为Web Garden的时候请求就会被转发给其中的一个进程处理。 说了这么多我们就来看看一些比较深一点点的话题。 初窥IIS的内核 正如之前我们所说的为了使得IIS的性能最高那个介绍HTTP请求的监听者运行在内核模式中。被接受到的请求被放在对应的应用程序池的队列中之后被用户模式的工作进程处理。如果我们从这里来分析性能的话大家其实可以分析出处理一个ASP.NET的请求其实需要涉及到三次的线程切换与二次的模式切换所以请求的处理时间和代价是相当的高的我们后面会讲述如何尽量的避免这样的情况。 为了使得大家更加的清楚我们用一个图来说明一下 上图显示了在IIS7中的请求的处理的一般流程但是这IIS6的处理流程还是有点区别的。在IIS6中WWW Service包含了Windows Process ActivationService (WAS)的功能。 朋友们可能担心上面的图看不懂没关系我们就来具体的看看。 Http.sys解析 我们这里的讲述就以上图做参照来说明。 当一个请求被HTTP监听者(HTTP.sys)接受之后它根据请求的URL进行匹配然后马上就把请求放在一个内核模式的不同的队列中以便这些请求可以被用户模式中的应用程序池中工作进程获取然后处理。这里之所以要把请求放在队列中是为了快速的释放HTTP监听线程从而使得HTTP.sys可以接受其他更多的请求。另外请求被放在不同的队列主要是根据请求的URL来分组的并且应用程序池中也配置了处理何种URL。 当响应产生之后响应会被再次发送给HTTP.sys大家可以看到图中第5个步骤然后再把响应发送给客户端。HTTP.sys可以基于一些配置将响应进行缓存我们会在后面进一步的讨论。 这里有一点非常中的就是HTTP.sys将响应缓存在内核中并且这个内核中的这个缓存空间是不分页的。 什么是不分页的呢 不分页就意味着HTTP.sys总是将响应的内容缓存物理的内存中而且这一块内存不会被交换出去就是说不会被分页到磁盘上面这部分的内容已经涉及到了Windows的内存管理知识。 当请求的响应被缓存在了内核模式之后下次再次请求的时候可以直接的读取缓存而后续的步骤全部跳过这会极大的提升性能。 今天我们谈到这里下一篇接着谈 作者介绍汪洋哪合伙CEO曾大汉电子商务有限公司首席技术官副总裁负责公司产品、技术、运营参与商业模式设计。华康移动医疗前CTO副总裁首席架构师。微软MVP .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注 赞赏 人赞赏
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88403.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!