资源预览内容
第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
第9页 / 共47页
第10页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
性能检测与问题调试篇思考题 1、一个系统运行的常见硬件与网络条件有哪些?答:电脑主机,网线,路由器,交换机 2、评价硬件的主要参数有哪些?答:CPU线程数,内存大小,硬盘大小,硬盘读写频率 性能计数器查看IIS Web请求连接数是哪个指标?答:Request.Current 3、Fusion Log的作用是什么?答:日志记录查记录查 看工具 4、利用windbg,如何查看当前占用CPU特高的线程的 最后执行堆栈?答:!dumpheap -stat 5、能够应用ARR的一些场景?答:在多个服务器上部署网站,可以充分利用多个服务器资源,提高用户体验软件Bug,业界一件很常见的现象 软件纠错的六个阶段: 1、这不可能。 2、我机器上就没事。 3、不应该呀。 4、为什么会出现这种问题? 5、噢,我明白了。 6、以前怎么就没问题千行代码缺陷率(bug率) CMM1级 11.95 CMM2级 5.52 CMM3级 2.39 CMM4级 0.92 CMM5级 0.32 Raytheon公司的BUG率为0.03 如果我们一味的强调软件必然有BUG,那可能打到朝鲜的导弹 会直接偏离到日本,虽然这些确实跟人员的素质、生产率的质 量以及管理有很大的关系,我们可以不用这种标准来要求自己 ,但要向着好的目标前进。 至少要意识到,提高软件质量,降低缺陷率,达到一个高度, 在业内是存在的,只是我们的环境和客观条件让我们停滞不前裁判文书网问题描述1、频繁出现错误 2、出现超出Limit链接数 3、整体页面响应慢 4、页面无任何响应 5、间歇性出现重新登录性能篇 性能对Bug的影响 1、性能不足,导致运算超时,原代码未进 行合理判断,会导致异常 2、性能不足,导致资源加锁,出现并发共 享错误 3、性能不足,导致内存溢出 4、性能不足,导致不能响应请求 5、性能不足,导致Web前端事件出现紊乱性能的基础:环境资源使用情况 1、CPU资源 2、内存资源 3、网络资源 4、IO资源 5、硬盘资源基本网络拓扑结构公众防火墙路由器交换机存储服务器台式机笔记本内部用户系统基本环境系统使用情况1、核数 2、内存可用数 3、CPU占用大型服务器的截图1、单核计算满负荷,现象 为总CPU使用接近1/N,图中 为1/4。现象:全部满负荷,现象为总 CPU使用接近100%。 问题: 当长期满负荷CPU时,这时程序 一定存在问题,需要进行排查, 对文档的。服务器的CPU利用率 在50-60%则是一个较高的利用 水平 原因: 高密度的计算性逻辑 例如:大循环,死循环 特别常见的有while(true)的逻辑 中性能计数器 1、性能计数器打开方式 2、性能计数器的快速定义 3、外部程序监听性能计数器性能计数器的打开性能计数器:定义观察系统健康状态性能计数器快速定义 代码记录计数器 PerformanceCounter cpu = new PerformanceCounter(“Memory“, “Available MBytes“, “); while (true) /系统可用内存 string availval = string.Format(“0 MB“,cpu.NextValue(); /入库 Thread.Sleep(1000); performanceCounter1 = new System.Diagnostics.PerformanceCounter(); performanceCounter1.CategoryName = “Processor”; performanceCounter1.CounterName = “% Processor Time”; performanceCounter1.InstanceName = “_Total”; performanceCounter1.MachineName = SER_IP ;/此处可以为其他服务器的地 址,其他机器需要开启Remote Registry服务Example:https:/msdn.microsoft.com/en- us/library/system.diagnostics.performancecounter.aspxWindows模拟登陆using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Principal; using System.Runtime.InteropServices; using System.IO; namespace ConsoleApplication3 internal static class WinLogonHelper / / 模拟windows登录域 / DllImport(“advapi32.DLL“, SetLastError = true) public static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); class Program static void Main(string args) IntPtr admin_token = default(IntPtr); WindowsIdentity wid_admin = null; WindowsImpersonationContext wic = null; /在程序中模拟域帐户登录 if (WinLogonHelper.LogonUser(“uid“, “serverdomain“, “pwd“, 9, 0, ref admin_token) != 0) using (wid_admin = new WindowsIdentity(admin_token) using (wic = wid_admin.Impersonate() /假定要操作的文件路径是10.0.250.11上的d:txt.txt文件可以这样操作 FileInfo file = new FileInfo(“10.0.250.11d$txt.txt“); /想做什么操作就可以做了 Windows基础环境资源使用情况 1、时钟 2、用户权限 3、防火墙开启状态其他常见的环境问题 1、时钟 2、用户权限 3、防火墙开启状态 http:/www.cnblogs.com/EthanCai/a rchive/2013/06/11/3132026.html时钟是容易忽略的,但引起问题的 一个隐患的环境问题指定外部时间源并与之同步w32tm /config /manualpeerlist:“210.72.145.44“ /syncfromflags:manual /reliable:yes /update/manualpeerlist表示外部时间源服务器列表,多个服务器之间可 用空格分隔,210.72.145.44是中国国家授时中心的时间服务器ip地址/syncfromflags:manual表示与指定的外部时间源服务器列表中的 服务器进行同步/reliable:yes设置此计算机是一个可靠的时间源。此设置只对域控 制器有意义。/update向时间服务发出配置已更改的通知,使更改生效windbg 系统无响应现象 系统占用内存太大 系统内存持续增长 垃圾回收优化程序加载(Fusion Log)Windbg:创建转储文件初始化加载1、符号加载 srv*c:/symbols*http:/msdl.microsoft.com/download/symbols 2、调试文件加载 .load C:WindowsMicrosoft.NETFramework64v4.0.30319SOS.dll(64 位为Framwwork64)C:WindowsSysWOW64taskmgr.exe系统基本情况检查 !dlls -i(列出所有加载的dll) !tp(全称!threadpool),查看线程池 !threads,查看线程数 !runaway,查看各线程占CPU情况,适合非线程池线 程监控 !dumpheap -stat,查看最后执行的堆栈,也即代码!dumpheap -type System.Text.StringBuilder -stat MT/ !dso查看对象 .cls(清除屏幕) !eeheap -gc系统无响应现象 1、确认线程池,一般无响应的线程要么占 用CPU特别多(无法及时响应),要么占用 特别少(死锁) 2、查找最后执行代码的断点 115s !SyncBlk系统占用内存太大 !dumpheap -stat !dumpheap -type Lawyee.BigData.Model.BDoc stat !dumpheap -mt 000007feee769c00 -stat min 10 !dumpobj !dumparray 输出多个对象信息 .foreach (myobj!dumpheap -mt 008f4104-short) !do $myobj内存泄漏 1、比对-同大小(多)-堆栈 !heap s !heap -stat -h 0000000000630000 !heap -flt s 348 !heap -p -a 000000008aeff980垃圾回收带来的问题Gen0 、Gen1 、Gen2(长久对象) 当你设计一个类时,最好避免重写Finalize方法1、垃圾回收模式采用gcServer模式 2、垃圾回收采用消极回收模式,利用内存降低回收频次,让每次回收更高效System.Runtime.GCSettings.LatencyMode = System.Runtime.GCLatencyMode.LowLatency; 3、注意85K以上的对象,主动释放日志 大多数已有的日志系统都可以得出这样一幅图表,“Logger是系统中最大的瓶颈之一”。这个问题的解决 方案是使用异步的Logger,我们常用的Log4Net。 另外,Logger所记录的数据应该是结构化的数据,便于 后续的工具进行读取和处理,而不应该是一堆String。负载均衡(ARR)负载均衡实施 1、Nginx 2、ARR反向代理及负载均衡的价值: 1、可以充分发挥多服务器的扩展优势 2、可以将实际业务服务隐藏在后端,提升安全 3、可以良好解决IIS+Tomcat+Rest等不同Web中间件的协作问题 4、解决不同业务系统集成问题,甚至跨域 5、灵活控制功能展现 不良: 1、session的不全局共享,应采用全局共享session模式或cookie模式 2、二次请求,会带来局域网网络的二倍消耗重要的参数 参考站点:http:/www.iis.net/learn/extensions/url- rewrite-module/url-rewrite-module-configuration- reference The rule pattern gets the UR
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号