ASP.NET网页设计网站功能优化与网站妨碍仓酷云
说句实话,net网页编程跨平台根本就不是外行人想想的那种,一次编译,处处运行。了面临博客园愈来愈年夜的会见量的应战,这几天我用心于博客园网站的功能优化。前天实验了用空间换工夫的天生静态html文件的办法,感到全体功能进步不是很分明,并且增添了程序的庞大度,并带来了一些新成绩。
今天,我又回到了对网站程序自己的优化。功能优化的方针是削减内存损耗。博客园的程序与数据库运转在统一台在服务器上,内存只要2G。节俭内存是进步功能的主要要素。内存的两个年夜用户固然是Web使用程序与数据库,以是功能优化从两方面动手,一是削减Web使用程序的内存占用,二是削减数据库查询,从面削减数据库占用的内存。今天优化时,我发明了数据库中一张表的索引有成绩。在代码中,发明了一处中央应当利用缓存削减数据库查询,却没有利用。我改正了这两个成绩。
同时,我也对machine.config的设置举行了调剂,调剂时参考了:
1、Contention,poorperformance,anddeadlockswhenyoumakeWebservicerequestsfromASP.NETapplications
2、IIS6.0TuningforPerformance
必要修正的参数以下:
ConfigurationsettingDefaultvalue(.NETFramework1.1)Recommendedvalue
maxconnection212*#CPUsmaxIoThreads20100maxWorkerThreads20100minWorkerThreads50minFreeThreads888*#CPUsminLocalRequestFreeThreads476*#CPUs
maxWorkerThreads、maxIoThreads、minWorkerThreads是processModel的属性,maxconnection是connectionManagement中的一个属性,minFreeThreads、minLocalRequestFreeThreads是httpRuntime的属性。
这里我碰到一个成绩,博客园的服务器算一个CPU仍是两个CPU(你大概会想这算甚么成绩),物理CPU切实其实只要一个,可这不是一个一般的CPU,是超线程CPU(超线程如今也很一般,呵呵)。从操纵体系的义务办理器、设备办理器和SQLServer企业办理器中看到的都是两个CPU。以是之前我是依照两个CPU来设置的,而且没有设置minWorkerThreads。今天,我改成了单CPU设置,而且设置了minWorkerThreads,但设置成了一个不保举的值:100。(我设置时看错了保举值,不知是不是是这个设置引发了明天的服务器妨碍)
持续优化,在网上看到一篇TipsforASP.NETApplicationPerformanceEnhancement,个中提到一点“AvoidThrowingExceptions.”,这让想到在博客园程序中,当用户会见一个不存在的地点时,会抛出非常BlogDoesNotExistException,然后在Error.aspx页面显现非常信息,这个中央我一向以为不存在功能成绩,但我俄然想到,假设网上有甚么软件大批会见博客园不存在的地点,会发生良多非常,这时候大概会带来功能成绩,处置这些非常,必要损耗一些资本,仅仅为了显现非常信息而损耗高贵的资本,太不值得了。关于如许的情形,间接重定向到一个毛病提醒页面就好了,没需要抛出非常。博客园网站占用内存过量的成绩大概这也是祸首罪魁之一。我立即对代码举行改善,在重定向时,我没有指向毛病页面,而是指向了博客园首页(在办理一本性能成绩时,来了别的一本性能成绩,博客园首页是会见量最年夜的页面,将有效地点会见重定向到首页,给首页带来更年夜的压力)。
做这些优化以后,我更新了服务器上的程序。更新后,体系运转一般,让我欣喜的是,内存占用降了上去,本来w3wp历程一般必要占用600多M内存,高的时分乃至800多M,如今基础上在500M摆布。
明天早上,当我筹办享用优化的功效时,实际却跟我开了个打趣,9:00摆布,有人反应不克不及会见本人的Blog,而会见博客园首页一般,我检察了一下毛病信息内容为:
CS1595:已在多处界说“_ASP.Calendar_ascx”;利用“c:WINDOWSMicrosoft.NETFrameworkv1.1.4322TemporaryASP.NETFilesblog49be8ecb4a239baejndjhfs.dll”中的界说。
这个毛病是在加载Blog页面上的日历控件时呈现的。奇异,这里的代码今天没有修正,之前也没呈现过这个成绩,在别的一目次中而且是别的的定名空间,切实其实有一个同名的控件,能够前一向运转一般,怎样明天就会呈现成绩?厥后我把该日历控件Codebehind中的类更名才办理成绩(两个同名的类在分歧定名空间,怎样会有成绩?奇异)。
而这个时分,服务器CPU一向100%负荷运转,年夜部分CPU被数据库占用了,会见网站很慢,常常堕落。用SQLServer的事务检察器跟踪,良多存储历程实行工夫很长。重启IIS、数据库索引优化、重启服务器,都没能办理成绩,厥后恢复了之前的程序,仍是没办理成绩,接着我将machine.config依照两个CPU举行设置,并删除minWorkerThreads设置。最初,我修正了程序,将有效地点会见重定向到一个静态页面,并更新服务器,常常两个多小时的奋战,在11:30摆布才让博客园恢复运转。
事实是甚么缘故原由引发此次妨碍?我如今也弄不分明,举行了那末多处置,事实是哪一个要素是关头?如今也没法判别。我必要投进更多精神对网站举行功能优化。就写到这吧,持续研讨博客园网站的功能优化。有乐趣的伴侣,接待在博客园一同研讨高功能Web使用程序开辟。
完全不一样的。.net其实我也说不太清,.net可以把他理解为跟J2EE相对的工具。c++主要做系统相关的开发你要学.net的话就应该学C#。(其实微软在.NET平台上也考虑了给C++留一个地位。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 逐步缩小出错代码段的范围,最终确定错误代码的位置。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项! 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
页:
[1]