K2上海总部技术培训分享笔记
第一部门 WinDdg 入门指南
1、NGen.exe --> native code 预编译,省去了.NET程序编译器JIT过程,是程序第一次运行也非常快。
NGen 参考资料:http://msdn.microsoft.com/zh-cn/library/6t9t5wcf.aspx
2、在不同版本下查看dump
.NET 2.0/.NET 3.0/.NET 3.5
!loadby sos mscorwks或!loadby [sos文件路径]
.NET 4.0
!loadby sos clr
3、查看dump中Appdomain,assembly, module,mt使用的基本语法,!dump+查看的类型
!dumpdomain 查看所有的appdomain
!dumpassembly xxxxxx 查看指定的应用程序集
!dumpmodule xxxxxx –mt 查看指定类(模块)
!dumpmd xxxxxx 查看方法
!u: 查看二进制汇编代码
!dumpil [地址代码]:根据内存地址查看中间代码
Adplus.exe/adplus.vbs:抓取dump的文件,版本不同,会有不同adplus文件
-hang/-crash:使用adplus抓取dump的参数,二者选其一,建议生产环境中不要使用-crash
!eeheap/!eestack: 一个进程一个栈,一个栈是1M内存
!clrstack:看程序堆栈调用情况,也看托管代码
!thread:看托管线程
!~:看所有线程
1个thead的栈默认空间:1MB ,如果有2000个线程,2G的内存就挂了;
一般设计最好是用线程池,控制总的线程数
~1s [切换到1号线程]
!clrstack [查看该线程的托管代码调用堆栈,可以看到该线程所执行的线程方法]
!dumpstack 查看堆栈跟踪(非托管和托管的堆栈都显示)
KB 看二进制,费托管代码
!dso 查看目前栈上的所有对象
!help 查看帮助
第二部分 WinDbg 实战
2g * 60% = 1.2g : 32位的操作系统,ASP.NET程序默认可以使用的最大内存大小
调整ASP.NET最大使用内存比例
machine.config comment
processmodel
memorylimit = "60"
client --> iis(超过5000,进入queue) --> thread pool(超过20*8,进入queue)
managed heap 托管堆
loader heap 引用堆
public class demo {
int a = ; //heap
public void F1() {
int b = ; // stack
}
}
lock(this) 不好,lock(typeof(..)) 最不好不要lock值类型。
垃圾回收过程(GC) :
iis w3wp : 100 threads,其中挂起, 60 managed threads(挂起时,所有的managed线程都不会工作)
suspendEE
Mark :找对象有没有ROOT的对象 引用ROOT
PLAN:
restartEE
标记没有根的对象,删除掉,整理内存(Compact,使内存整片存在,避免OOM),把G0中没有删除的对象,COPY到G1 。
当新对象来的时候,G0有可能有两种:1是扩展 ,2是回收
当G1满的时候,G1 -> G2
g0:g1:g2(回收次数)
正常情况下:100:10:1
如果G0,G1,G2回收次数都基本相同时,说明内存不够用,频繁的FULL GC,OOM ,内存的碎片也会形成的OOM
.NET CLR Memory 性能计数器
This counter displays the current size of the Large Object Heap in bytes. Objects greater than 20 85 KBytes are treated as large objects by the Garbage Collector and are directly allocated in a special heap; they are not promoted through the generations. This counter is updated at the end of a GC; its not updated on every allocation.
%time in gc (10%~ 15%) < 20%
LOH
1.只有在FULL GC时才会回收
2.回收时,不会做Compact压缩转移(可能会出现碎片)
if broker it
tinyget -srv:localhost
http://support.microsoft.com/kb/840671/zh-cn
debugdiag c++
adplus_old -hang -pn w3wp.exe -quiet -o c:\dumps
(抓的话,会挂起)
Mem usage 物理内存会涨
quiet:交互方式
高内存的分析步骤:
1. 是否.NET内存使用的多
2.内存占用比例
3.占用内存最大的几种对象
4.为什么没有垃圾回收(找到ROOT)
!eeheap -gc (查看.NET使用的大小)
!dumpheap -stat (得到内存占用比例,相当于Group by)
!dumpheap -type stystem.string = !dumpheap -mt 1342112
!dumpheap -mt XXXX -min 20019 -max 20021 -stat
!gcroot XXXXXX(随机找一个ID,查出Root)
!finalizequeue
!runaway (查看线程的CPU使用时间)
.time 指定线程的CPU使用时间
Finalize
public class link {
~Link() //Finalize
}
如果写了析构函数,对象需要2次GC才释放
Finalize Thread进行Finalize queue
High MEM会导致High CPU 因为垃圾回收导致的
logfiles
iisweb /query
httperr 大于400的错误
eventvwr
.symfix + c:\symbols 加装符号表 (下载PDB)
.reload
Kb 看二进制的
>>> 当前运行的行
!objectsize 121212 看对象的大小
!do
.time
!runaway
~11s
.loadby sos mscorwks
!clrstack
!u 1212312
>>>
!ip2md 1212312
IIS recycle 建议使用
~* e!clrstack 看所有线程
!syncblk 查看lock的线程(分析)
.chain 查看SOS
DW20.EXE --> doctor watson 出问题的时候诊断进程
server unavailable 通过IIS的站点的应用程序池设置失败保护
1st chance 一般从这个开始查
2chance 比较严重,Exception 已经抛到OS
adplus_old - -pn w3wp.exe -quiet -o c:\dumps
-fullonfirst
sxe clr 开启Exception的抓取
!pe 打印异常
stackoverflow 1M / 4 = 25w次的调用 a里面调b, b里面调用a
性能计数器alert ,当某个计数器的值达到某个阀值时,可以执行某个程序。
第三部分 SQL Server 调优
设置SQL Server的内存使用
16g -> 12000(m)
32g -> 26~28
64g -> 56~58
原则:需要给系统留4~6g内存
max degree of pata 最大并行度: 设置成1(有几个solts CPU设成几)
X86 用4G以上的内存
1.AWE 勾上
2.需要改boot.ini
3.组策略
lock pages memery
数据库文件推荐的增长策略 200M
select count(0) from _line with(nolock)
逻辑读 是以page为单位
RID lookup 文件号 非聚集时的指针到内容的查找
search arguments
创建索引的推荐办法:
create index ix
(cond1,cond2,cond3) ---条件列
include(col1,col2,col3) ---数据输出列
在创建索引时可以增加条件,当符合条件时才使用该索引,该特性对于少众数据的筛选非常有用( type中80%是1 , 15%是2, 5%是3 )
create index ix
where type=3
查看系统认为缺失的索引
sys.dm_db_missing_index_details
dbcc traceon(1222,3605,-1) 开启死锁的日志 >= sql2005
-1代表所有的库
select db_id('dbname1')
监控中starting没用
proc stmcompleted 记录存储过程中所有语句的执行情况
sys.sysprocesses 查看SQL Server中的进程情况
select @spid 查看SQL当前进行的编号
reads > 10000
user connections :sql general statistics
batch requests :sql statistics
page file expectancy :sql buffer manager
第四部分 一些有用的网址
鞠强博客:http://www.cnblogs.com/juqiang/
鞠强同事博客:http://www.cnblogs.com/StevenChennet/
Windbg命令:http://www.windbg.info/doc/1-common-cmds.html
SOS命令:http://msdn.microsoft.com/zh-cn/library/bb190764(vs.80).aspx
K2上海总部技术培训分享笔记的更多相关文章
- 上海苹果维修点分享苹果电脑MACBOOK故障维修常见案例
苹果的电子设备无论是外观和性能都是无与伦比的美丽,很多开发者都开始选用苹果电脑macbook.近年来苹果售后维修点来维修苹果电脑的用户也越来越多,我们上海苹果维修点就整理分享了一些苹果电脑MACBOO ...
- 开拓新途径找出新方法,上海SEO公司分享3个操作看看是否可行
开拓新途径找出新方法,上海SEO公司分享3个操作看看是否可行 内容收录,外链公布,流量点击.用户体验.这是SEO优化的几个核心和重点.也是SEO站长每天都在绞尽脑汁进行操作的SEO重心,影响着非常多人 ...
- 上海2017QCon个人分享总结
有幸作为讲师受邀参加InfoQ在上海举办的QCon2017,不得不说,不论是从讲师还是听众的角度衡量,QCon进一步扩大了技术视野.虽然前端专题只有四场,但每一场分享都是目前的热门话题.并且Qcon的 ...
- C# 8.0和.NET Core 3.0高级编程 分享笔记二:编程基础第二部分
这一篇是接上一篇笔记的第二部分. 2.5深入研究控制台应用程序 前面创建并使用了基本的控制台应用程序,下面更深入地研究它们. 控制台应用程序是基于文本的,在命令上运行的.它们通常执行需要编写脚本的简单 ...
- Elasticsearch 趋势科技实战分享笔记
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484113&idx=1&sn=6c40d7f ...
- MongoDB入门分享-笔记整理精选
最近在学习MongoDB,怕以后忘记,自己做了一个整理,给不知道的小伙伴一起分享学习一下. 第一步> 首先到官网下载,安装MongoDB.(注意MongoDB还有一个可视化管理工具叫: Mong ...
- WizNote分享笔记至博客
右边的分享按钮 选中后出现如图所示 然后可以进行分享了
- C++分享笔记:扑克牌的洗牌发牌游戏设计
笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...
- C++分享笔记:5X5单词字谜游戏设计
笔者在大学二年级刚学完C++程序设计后,做过一次课程设计,题目是:5X5单词字谜游戏设计.为了设计算法并编写程序,笔者在当时颇费了一番心力,最后还是成功地完成了.设计中不乏有精妙之处.该程序设计完全是 ...
随机推荐
- hdu 4288 Coder
线段树好题,和 15 年的广东省省赛 C 题有相似之处,一开始我的思路有偏差,看了别人的博客后感觉处处技巧都是精华,主要是区间合并的技巧一时很难想到,先附上代码: #include<cstdio ...
- 转:C/C++中,空数组、空类、类中空数组的解析及其作用
转自:http://blog.sina.com.cn/s/blog_93b45b0f01015s95.html 我们经常会遇到这些问题: (1)C++中定义一个空类,他们它的大小(sizeof) 为多 ...
- SDL1.2到2.0的迁移指南(转)
里面有些单词不好翻译所以放在开头,以备查验. BLock Image Transfer, a computer graphics operation in which two bitmap patte ...
- javascript算术运算符详解
算术运算符 +.-.*./.%.++.-- ++.--分为前缀形式和后缀形式 前缀形式先加减1在执行 后缀形式先执行再加减1 注意 +号用来连接两个字符串 只要+连接的操作数中有一个是字符串型,JS就 ...
- (x&y) + ((x^y)>>1)即x和y的算数平均值
(x&y) + ((x^y)>>1)相当于(x+y)/2 (x&y)+((x^y)>>1),把x和y里对应的每一位(指二进制位)都分成三类,每一类分别计算平均值 ...
- Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...
- 关于iOS7 设计师需要了解的十件事
在今年的WWDC上,苹果推出了采用全新设计语言打造的iOS7.新系统弃用了诸如皮革.木质一类的伪3D拟真效果,取而代之的是更加简洁轻量的设计路线,其中文字排版成了重头戏,另外在某些方面也受到了扁平化设 ...
- Scrum项目6.0
sprint演示 1.坚持所有的sprint都结束于演示. 团队的成果得到认可,会感觉很好. 其他人可以了解你的团队在做些什么,并得到重要反馈. 演示是一种社会活动,不同的团队可以在这里相互交流,讨论 ...
- 第二周 WBS、NABCD查阅
WBS WBS:工作分解结构(Work Breakdown Structure) 创建WBS:创建WBS是把项目可交付成果和项目工作分解成较小的,更易于管理的组成部分的过程. WBS是项目管理重要的专 ...
- 上国际网络——通过配置host
http://laod.cn/hosts/2016-google-hosts.html