摘要:
前段时间做ASP.NET网站的性能分析,用了windows性能计数来监控服务端请求状况。我用的时候常见的监控点如下:1、监视对象为Asp.net Apps v2.0....(版本)这个对象,计数器用Request/ sec,Request Total,Request In application Queue,分别可以得到请求每秒数量,请求总数,请求排队数量。2、网站连接数量也可以用Web Service对象,选中具体网站实例查看。3、监视.Net Data Provider for sqlserver对象,里面有一些可以监视本机数据库连接池大小的计数器,默认数据库连接池为100,如果一直在10 阅读全文
摘要:
前段时间有同事用自定义的module来拦截webservice,通过解析webservice的类试xml的对象来获取一些原始数据,但是上线后一直抛400错误,经过我的反复分析,终于发现其中问题。最终的原因是在context.Request.InputStream.Read(buffer,0,length); 和context.Request.InputStream.Position=0; 两条语句之间抛了异常会导致客户端获取服务端返回的400错误。这个错误不常见,因此我也是根据一步一步调试才发现这个问题的。module里读取context当前请求流和重新设置数据流到起始点之间出异常,导致了当前 阅读全文
摘要:
前端时间做性能分析,有一段时间总是没有记录到到底消耗到哪里了,最后通过反复测试,才发现是NLog记录日志太慢,于是通过NLog自己可以调整的异步写日志的方式,性能提到明显提升,配置方式如下:nlog配置节的targets标签改为<targets async="true">配置前后相差几秒的时间差,但是这也说明我们系统日志记录得太多导致的。但Log4net好像没有这样的异步写日志的配置http://lawson.cnblogs.com/ 阅读全文
摘要:
做压力测试或服务端请求一个特定域名时,同一时刻的连接量默认被.NET框架限制了,需要设置才能生效,我是通过windows的性能计数查看到压力测试一直没有真正提交上来,才发现这个问题,主要的设置参数为:System.Net.ServicePointManager.DefaultConnectionLimit,需要设置的相关参数如下:System.Net.ServicePointManager.DefaultConnectionLimit在windows程序时默认为2,不设置值,有可能会更大一点,但不会超过100,可以把该值设置更大,但如果设置小了,就以设置后的值为准 System.Net.Ser 阅读全文
摘要:
客户端Console(连接Webservice)同步:(客户端记录数据)进入方法,新增1个线程New webservice对象,新增1个线程同步调用webservice,新增2个线程(一直不消耗工作线程和IO线程,一共增加了3个线程)异步:(客户端记录数据)进入方法,新增1个线程。New webservice对象,新增1个线程异步调用webservice,新增6个线程,占用1个IO线程然后中途会消耗新增1个线程,中途可能会回收1个线程异步webservice回调,再占用1个IO线程最后回收2个IO线程(最后不占用工作线程和IO线程)(最高会占用2个IO线程,最后全部回收,一共增加了7个线程)服 阅读全文
摘要:
1、ASP.NET 同一时刻只能发起的工作线程数量:(maxWorkerThreads * CPU逻辑数量)-minFreeThreads比如2个CPU默认配置maxWorkerThreads=100,minFreeThreads=176,则同时最大只能有24个工作线程。(这里不管 <system.net> <connectionManagement> <add address="*" maxconnection="8" /> </connectionManagement></system.net&g 阅读全文