今天凌晨 阿根廷对瑞士比赛已经过去,比分是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. phalcon: queueing使用心得,需要安装相应的软体

    http://flyhighest.com/archives/50 原本没有用过phalcon的消息队列,本来以为很简单,结果搞了半天,把步骤记录一下. phalcon的官网上没有说需要安装beans ...

  2. phalcon: 获取参数的方法

    phalcon: 获取参数的方法 一般情况下:GET/POST $this->request->get(参数); $this->request->getPost("参 ...

  3. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 排序、筛选、分页以及分组

    Sorting, filtering, paging, and grouping 7 of 8 people found this helpful By Tom Dykstra The Contoso ...

  4. IEnumerable接口的实现

    对象要实现可以迭代需IEnumerable接口并实现GetEnumerator方法.一下简单例子 public class SPEnumerable<T> : IEnumerable { ...

  5. win8style布局

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...

  6. 【CodeForces 651A】Joysticks 模拟

    题意:给定a,b,每个单位时间可以将a,b中一台加1,一台减2,求最久可以支持多久. #include <cstdio> #include <algorithm> using ...

  7. 4.2 EF的CRUD控制器代码

    以下的例子以留言本作为依据. 1.添加 public ActionResult Create() { return View(); } // // POST: /Contact/Create [Htt ...

  8. 《Java程序设计》实验五 实验报告

    实验五 java网络编程 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2. ...

  9. uva514(trail)(模拟栈)

    //#define LOCAL #include<cstdio> #include<cstring> #include<cstdlib> #include<s ...

  10. 登陆验证前对用户名和密码加密之后传输数据---base64加密

    以下这种方法是加密传输的简单实现 1,base64.js /** * * Base64 encode / decode * * */ function Base64() { // private pr ...