今天凌晨 阿根廷对瑞士比赛已经过去,比分是1:0  阿根廷获胜;虽说我是伪球迷,但是也挺希望梅西进入决赛。昨晚也压了下90分之内  0:0  ,结果胜出;另一场压的是美国对比利时,也是压平,就这样二串一被我无意中压中了。想起昨晚睡觉之前手随便抖动了一下才中的奖励,才明白什么叫“有心栽花花不开,无心插柳柳成荫啊”!  或者球场上就是如此吧,没有常胜将军,屌丝也同样能干掉高傲的 高富帅。。。。西班牙被出局了,葡糖牙也嗝屁了,C罗就这样没落的走了! 哥斯达黎加队好像是我买彩票第一场中的球队,也是黑马中的战斗机。然后今天的话题也跑偏了......我了我竟然是程序员.....

对于.net 开发原来说在性能优化方面,有很多种方案;

第一: 使用日志系统

这种方案需要开发人员用大量的时间去在函数开始和结尾上写日志。。。。若没有.net  mvc 中的那种拦截方式来跟踪日志系统,在平时的7层架构中是比较困难的...

第二: 在代码中不断的写System.Diagnostics.Debug.WriteLine();

这种方案个人感觉比日志系统好,released 版本也不会将Debug的信息加入进去。而且配合debugView工具就能一目了然的看清每个断点的执行时间,这样就是大概初步了解了。。。。。。在多线程里面好像还是比较实用的。 缺点就是我压根不想写任何debug信息啊,因为我根本不知道问题出在哪里。

第三、dotTrace Performance

以前和大家一起用过dotTrace 进行客户端的性能优化,大家对他的评论是不准确。。。。。当初自己的也有怀疑,因为他和debugView 之间查选出来的数据 是慢一些的,或许真会影响进程执行的效率。  但也只是或许吧。。。那也好是好久之前的事情了。

然而上周潘总让我帮SCM 他们处理一个客户(太湖雪)的一个问题:出入库单据 新增会报错 1、“sqlTranse 已经关闭”;2、‘0行没有 数据’  等乱七八糟的提示错误。 本着负责的态度,让我远程看了下,发现的确会出现第一个问题。。。。但是。。。但是 在这过程中让我很蛋疼的是:“你妈,你们新增一张出入库单据,竟然花费70多秒,你造吗??你们竟然没有提?,而且你们目前数据只有1-2万条。。” 当然本着对自己负责和对公司负责的一个i额态度,我压抑住了心中的怒火,和蔼并带着微笑,心中却夹杂着各种骂程序员的想法和客户说:“哥们,你们这速度用的起来吗?”, 于是乎那哥们方法见到了如来,眼中饱含泪水,而又无奈的说道:“说的好.....”.

就这样我决心要看下系统入库的代码,决定查找下问题出在哪里......但是若是程序员都知道,从何而起? 有些问题只有在大数据量才发生,客户那边有我们这边又不会重现,不会重现就不能对症下药。

当然凭着业界良心,还是弄到了他们的数据,数据库备份了几次都是数据不完整,但是最后还是好了。 问题是重现了,但是怎么弄呢?  IIS端保存逻辑代码有几千行,要我如何是好。若是以前的我,也尝试着不断的大debug的方式,进行查询。。。。但是你懂的,后果会很严重。    在自己的电脑中无意中再次看到了 dotTrace ,试想着能否在IIS进程中进行监控呢。。。。抱着试试看着的态度,我安装了,然后进行监听, 你妈 感动的泪水都流出来了,啥都不用说了!一万个赞,问题直接定位,如下图结果:  “工欲善其事必先利其器” 是很有道理的

dotTracePerormance 工具的更多相关文章

  1. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  2. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  3. 应用工具 .NET Portability Analyzer 分析迁移dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  4. .NetCore中的日志(2)集成第三方日志工具

    .NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...

  5. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

    自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...

  6. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  7. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

  8. CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15

    之前有位搞平面的好友“小瘦”说CDR X8无法破解,只能用X7.呃……呃……呃……好像是的 其实CDR8难激活主要在于一个点“没有离线激活了,只可以在线激活”,逆天不是专供逆向的,当然没能力去破解,这 ...

  9. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

随机推荐

  1. 【图像处理Matlab】2 灰度变换 imadjust stretchlim

    f=imread('123.tif'); % 读入一幅图片 g=imadjust(f,[ ],[ ]); % 负片显示 [imadjust] imadjust(f, [low_in high_in], ...

  2. mysql 截断

    当id为int是,如果是10位数,可以插入,primary key不能重复插入,其默认值可以为NULL一个varchar字段的值如果长度设定为255,则如果其长度为256也可以插入,但已经被截取到了2 ...

  3. perl中->和=>作用

    -> 用法 -> 有两种用法,都和解引用有关. 第一种用法,就是解引用. 根据 -> 后面跟的符号的不同,解不同类型的引用, ->[] 表示解数组引用,->{} 表示解散 ...

  4. 【转】 探索UDP套接字编程

    UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...

  5. linux笔记:linux系统安装-系统分区

    分区类型: 1.主分区:最多只能有4个. 2.扩展分区:最多只能有1个:主分区+扩展分区最多有4个:不能写入数据,只能包含逻辑分区. 3.逻辑分区. 格式化: 向磁盘中写入文件系统.会附带地清空磁盘中 ...

  6. 栅栏 CyclicBarrier

    java.util.concurrent.CyclicBarrier 类是一种同步机制,它能够对处理一些算法的线程实现同步.换句话讲,它就是一个所有线程必须等待的一个栅栏,直到所有线程都到达这里,然后 ...

  7. 025-ViewData、ViewBag与TempData概述

    Action向View传递数据很简单,方式也很多,最直接的就是我们向View传递Model,这本身就是MVC的意义所在.如果是显示一些消息,像是错误信息,可以使用ViewData.ViewBag.Te ...

  8. 关于java中JButton的样式设置(的一些我们应该知道的函数)(转)

    1. 对JButton大小的设置 ——因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 button.setPreferredSize(new Dim ...

  9. SQL Server数据库(作业)

    create datebase zuoye2gouse zuoyegocreate table student --学生表( Sno varchar(20) not null primary key, ...

  10. Java三大特征之------多态

    1.定义 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式. 2.存在条件 2.1存在父子关系 2.2子类中存在重写方法 2.3父类类型的变量指向子类对象 ...