冷月葬花魂 发表于 2015-1-16 14:23:01

来一篇关于NET的Web使用程序功能调优

我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。1.1背景先容
功能思索必需贯串在一样平常的编码中,功能监控要列进QA一样平常事情,每一个程序员都要明白怎样做功能调优。功能常常与程序功能、数据量、扫瞄器功能负载、服务器负载、收集带宽等都有干系。

1.2手艺常识点
1.2.1相干工具
程序功能是不是存在成绩,必需以实践的监控数据作为参考,包含哀求入手下手工夫、延续时长、页面巨细、数据量等等。这里先容几种经常使用的监控工具。

1.2.1.1Firebug
Firefox插件,版本V1.2.1,供应对HTML、CSS、剧本、Dom、收集、Cookie等的监控。功能调优次要使用收集选项,监控哀求实行的工夫;需要时也能够监控HTML、剧本和Cookie。合用于Firefox情况,监控单次哀求页面和单词的HttpWeb哀求,收费。

1.2.1.2HttpWatch
IE、Firefox插件,版本V6.0.17。V5.x版本只合用于IE。供应对单个HttpWeb哀求的监控,包含其Header、Cookie、Cache、Content等等,其TimeChart供应对发送、守候、吸收三个阶段时长的准确监控。免费,有破解。

1.2.1.3Fiddler2
自力程序,版本V2.1.9.4Beta,供应对一切IE收回的HttpWeb哀求的监控,包含Header、Content、TimeLine、Catch等。合用于必要对HttpWeb哀求和呼应内容的具体监控。收费,基于.NET构建,必要安装.NETFramework。

1.2.1.4Pingdom
收费的整站测试工具,其摹拟扫瞄器载进指定页面的一切资本,包含HTM;、CSS、Javascript等一切工具,并在工夫轴面板上显现每一个工具载进的详细工夫。

1.2.1.5MSSQLServerProfile
MSSQLServer2005的构成部分,对数据库功能举行监控。一般用于监控是不是屡次实行特定存储历程,和特定存储历程实行的时长。这里不赘述。

1.2.1.6VSStudioTrace
VSStudioDebug工具的一部分,用于在程序中输入响应的调试信息,由此监控特定办法实行的时长;同意在web.config中把持是不是输入调试信息。一般搭配trace.axd监控POST哀求。合用于单个页面临每一个办法实行时长的监控。
使用程序级其余Trace
<configuration>
<system.web>
<traceenabled="true"requestLimit="40"localOnly="false"pageOutput="false"/>
</system.web>
</configuration>

单个页面的Trace
请在该页的@Page指令中将Trace属性设置为false。将存储您包含在页代码中的任何TraceContext.Write或TraceContext.Warn语句,而且它们只前往到跟踪检察器。假如但愿跟踪信息附加到与其联系关系的页的开端,请在Web.config文件的跟踪设置节中将pageOutput属性设置为true。假如要跟踪信息只显现在跟踪检察器中,则将该属性设置为false。假如您启用使用程序级跟踪,但不想显现使用程序某些页的跟踪信息,则利用@Page指令将不想显现跟踪信息的页的Trace属性设置为false。
经由过程http://localhost/trace.axd检察Get和Post的跟踪信息。

1.2.2调优偏向
1.2.2.1单个哀求或办法实行工夫出格长
成绩形貌:
因为代码、数据量、存储历程等缘故原由,招致某个哀求大概办法实行工夫出格长,招致功能瓶颈。好比OrderComplete页面(DDN-622,DDN-624),经由过程UPS及时猎取DeliveryDate耗时必要1秒。
怎样调优:
检察页面代码、特定办法是不是有优化的大概性。使用HttpWatch监控每一个HTTPWeb哀求,关于在内网实行工夫凌驾100毫秒(页面巨细100K之内)出格寄望。需要时使用Trace监控响应页面办法的实行时长,好比Page_Load、相干呼应事务等。

1.2.2.2页面数据量出格年夜
成绩形貌:
因为页面数据量出格年夜,在数据量猎取(Server一级)、扫瞄器出现大概会招致功能。经由过程HttpWatch监控发送、守候、吸收的时长。判断是不是违背“只取所需”的准绳招致数据冗余。好比,OrderComplete页面加载必要600毫秒以上(DDN-613),因为加载Order信息时将ShippingInfo、PaymentInfo也一并加载出去,形成在数据库级其余数据冗余和工夫华侈。
怎样调优:
只取所需,削减数据冗余。

1.2.2.3页面出格年夜
成绩形貌:
因为所需出现的数据量出格年夜,形成HTML页面出格年夜,扫瞄器剖析出现迟缓,形成功能瓶颈。好比Bom的ComponentUsage、Insertion&Guarantee,因为矩阵数据形成页面庞量凌驾2M、4M。
怎样调优:
利用加倍松散的HTML,削减HTML嵌套,不再利用.NET默许的校验器,削减页面庞量;限定不用要的ViewStage。

1.2.2.4Javascript功能瓶颈
成绩形貌:
扫瞄器对Javascript的实行功能差别形成此瓶颈,出格是当页面对照年夜的时分,IE的实行效力只要Firefox、Safari的60%摆布。好比document.getElementById()大概形成功能瓶颈。
怎样调优:
用JQuery的API替换一般的JavascirptAPI,在Javascript一级缓存数组。

1.2.2.5存储历程功能瓶颈
成绩形貌:
数据库一级未做优化,好比主键、索引,招致查询效力低下;存储历程利用了效力低下的语句,好比IN查询、一时表、及时统计、静态查询、游标轮回等,形成实行效力低下。
怎样调优:
创建主键、索引,利用效力更高的实行语句;用统计表替换及时统计。参照:080319DatabaseCapability的培训纪录。当数据量对照小的时分,经由过程界说表变量而不是一时表处置。

1.2.2.6削减HTTP哀求次数
成绩形貌:
在Javascript轮回中经由过程Ajax屡次倡议HTTP哀求;页面中内嵌多个IFRAME;页面频仍革新大概重载。
怎样调优:
不在轮回中倡议HTTP哀求;得当的数据和页面缓存;削减内嵌IFRAME的利用。制止页面频仍革新。

1.2.2.7制止屡次挪用数据库
成绩形貌:
在办法轮回中屡次挪用营业类会见数据库,好比Foreach、DataBind、DateItemBound。MSSSQLServerProfile能监控到此类操纵。
怎样调优:
制止屡次挪用数据库,如的确必要查询,在数据量少的情形下,将数据缓存在内存并在缓存中查询。

1.2.3调优步骤
分离HttpWatch、Firebug确认每一个页面哀求的实行时长,凭履历判断是不是存在功能瓶颈。
在页面得当地位增加trace信息,确认哪些办法对照费时。
代码检察,查找存在成绩的代码、存储历程、剧本。
确认每次查询的数据量和预期了局,过滤冗余数据。
调优后,程序功能须无数量级上的改良。

1.2.4代码标准
严厉实行公司的代码标准,出格是定名、存储历程标准。
每次代码提交之前,使用SVNDIFF工具确认每一个代码修正,确认无误后再提交。
每个分进来的Issue,导师、PM、TeamLeader必需做到代码检察。
不反复打造轮子,注重代码封装和复用,不打造冗余代码。
对Cookie、Session会合办理,KEY要办理起来;不再利用的代码、办法要实时删除。

1.3项目理论
1.3.1监控每一个页面的实行时长
使用Firebug、HttpWatch、Filddler2、Pingdom分离监控可疑页面的实行时长,判别大概招致页面功能低下的代码块。

1.3.2监控Profile
对可疑代码举行代码检察,假如嫌疑是因为存储历程等缘故原由招致的数据库功能低下,分离MSSQLServerProfile监控可疑存储历程大概表布局。

1.3.3Trace监控办法实行的时长
对可疑代码举行代码检察,假如嫌疑是因为C#代码招致的页面功能低下,分离VSStudioTrace监控代码段的实行时长。以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?

不帅 发表于 2015-1-18 13:46:50

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

海妖 发表于 2015-1-24 11:27:34

ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。

爱飞 发表于 2015-2-7 03:04:49

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

再见西城 发表于 2015-2-20 08:15:35

在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?

若相依 发表于 2015-3-6 17:16:22

是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。

蒙在股里 发表于 2015-3-13 05:08:42

在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。

柔情似水 发表于 2015-3-20 13:40:04

市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
页: [1]
查看完整版本: 来一篇关于NET的Web使用程序功能调优