今天凌晨 阿根廷对瑞士比赛已经过去,比分是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求齐次方程的解

    % 求Ax=0的解: r=rank(A): x=null(A,r) 求出来x的是归一化后的解.

  2. phalcon: 缓存片段,文件缓存,memcache缓存

    几种缓存,需要用到前端配置,加后端实例配合着用 片段缓存: public function indexAction() { //渲染页面 $this->view->setTemplateA ...

  3. 线性表 - 从零开始实现by C++

    参考链接:数据结构探险之线性表篇     线性表

  4. python 练习 30

    Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你 ...

  5. Matlab安装记录 - LED Control Activex控件安装

    Matlab安装记录-LED Control Activex控件安装 2013-12-01  22:06:36 最近在研究Matlab GUI技术,准备用于制作上位机程序:在Matlab GUI的技术 ...

  6. hdu---(1800)Flying to the Mars(trie树)

    Flying to the Mars Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  7. Git从远程分支创建本地分支

    git fetch origin master:temp 这句命令的意思是:将远程origin仓库的master分支下载到本地,并新建一个分支temp.

  8. Android MotionEvent事件响应机制

    在android中,事件主要包括点击.长按.拖曳.滑动等操作,这些构成了Android的事件响应,总体来说,所有的事件都由如下三个部分作为基础构成: 按下(action_down),移动(action ...

  9. 伪静态<-> 动态页,伪静态,真静态的比较和选择

    动态页,伪静态,真静态优缺点的比较 动态页不利于SEO优化. 动态页常常因为传参数的缘故后面会带一连串的问号.而搜索引擎会因为里面问号导致死循(机器人陷阱Spidertraps),所以带问号的地址搜索 ...

  10. 报错总结_java.lang.RuntimeException: Invalid action class configuration that references an unknown class name

    在使用SSH进行项目开发时,一不小心就可能出现以上的错误提示. 这样的问题可以简单理解为未找到名字为XXX的action 1)xxxAction没有在Struts.xml中配置相应的action: 大 ...