最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2. 这台服务器上装了SqlServer.TFS(项目管理.远程Git库.CI.生成代理).两个系统的整套DEV环境(六七个iis站点和八九个win服务), 还有其他一些辅助服务什么的,总之负担相对较重,内存占用经常10个G以上. 现象是经常报内存不足(平常明明还剩余至少5个G的内存). 然后我们发现有个iis站点不对劲,是一个为电商平台后台管理系统…
最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2.这台服务器上装了SqlServer.TFS(项目管理.远程Git库.CI.生成代理).两个系统的整套DEV环境(六七个iis站点和八九个win服务),还有其他一些辅助服务什么的,总之负担相对较重,内存占用经常10个G以上. 现象是经常报内存不足(平常明明还剩余至少5个G的内存).然后我们发现有个iis站点不对劲,是一个为电商平台后台管理系统提供a…
目录 1 JDK 工具的使用 2 查看 GC 日志信息 3 添加 JMS 远程监控 Tomcat是一款常用的Web容器, 它是运行在 JVM(Java Virtual Machine) 中的一个Java进程. 本文以Tomcat为例, 借助一些JDK的工具对Tomcat在运行过程中的内存占用情况进行监控, 为优化提供数据支撑. 1 JDK 工具的使用 JDK自带的工具位于${JAVA_HOME}/bin/目录下. JConsole 可以简单明了地查看到内存的使用情况, 线程的状态, 当前加载的类…
之前使用Java Swing开发了一款设备档案收集工具.支持多台设备同时收集,每个设备使用一个线程.在同时收集多台设备信息时,发现CPU占用率居然达到了97%,而且高居不下.显然这样的性能是令人无法忍受的. 我们知道,通过jdk自带的工具jvisualvm可以查看每个线程的执行情况,但就是无法分析每个线程的CPU占用情况.由于工具是运行在Windows系统上的,所以也没办法像Linux下面那样通过命令去分析线程的CPU占用.而微软的process explorer工具可以解决这一难题.通过这个强…
一.前言 最近一段时间,网站经常出现两个问题: 1.内存占用率一点点增高,直到将服务器内存占满. 2.访问某个页面时,页面响应过慢,CPU居高不下. 初步判断内存一点点增多可能是因为有未释放的资源一直在占用内存,而cpu居高不下可能是因为执行了耗时的操作. 下面我们就使用ANTS Performance Profiler和ANTS Memory Profiler这两个工具来分析具体原因. ------------------------------------------------------…
1. 问题简介 最近产品发布大版本补丁更新,一商超客户升级后,反馈系统经常奔溃,导致超市的收银系统无法正常收银,现场排队付款的顾客更是抱怨声声.为了缓解现场的情况, 客户都是手动回收IIS应用程序池才能解决. 这样的后果是很严重的,接到反馈,第一时间想到的是加内存吧,这样最快.但是客户从8G-->16G-->32G,只是延长了每次奔溃的时间,但是并没有解决系统卡顿的问题.到这里,也基本猜测了问题所在了,肯定是什么东西一直在吃内存且得不到释放.这种问题,也就只能打Dump分析了. 2. 打Dum…
问题描述: 当使用VS2017-> 调试->附加到进程来调试IIS进程(w3wp.exe)时,报错"无法附加到进程,已附加了一个调试器" 为了解决这个问题花了不少时间,在网上找了不少资料,试了7,8种方法都无效.最后用下面的方法解决了问题,供大家参考. 临时解决方法: 1 安装Debug Diagnostic Tool, 2 启动 "DebugDiag 2 Collection" 3 在process标签页中找到w3wp.exe, 右键选择detach…
ABP框架 - 介绍   在14,15年间带领几个不同的团队,交付了几个项目,在这个过程中,虽然几个项目的业务不一样,但是很多应用程序架构基础性的功能却是大同小异,例如认证.授权.请求验证.异常处理.DTO.日志.审计.定时任务.调度.多语言.应用配置管理等等这些功能.但是由于项目受限于进度.资源.团队成员的背景,在当时却难于做到各个项目的统一,只能用拷贝的方式,然后在不通的项目中各自再根据各自的需求去做改进.这促使我下定决心去整理实现一个通用的应用程序级别的框架,来提升项目交付的效率和质量.…
WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. WinDbg是微软很重要的诊断调试工具: 可以查看源代码.设置断点.查看变量, 查看调用堆栈及内存情况.  调试应用程序(用户模式 user mode)  调试操作系统及驱劢程序(内核模式 kernel mode)  调试非托管程序(native program)  调试托管程序(managed program)  实时调试 (JIT:…
为异常处理做准备,熟悉一下WinDbg工具 马上开始异常处理第二讲,但是在讲解之前,还有熟悉一下我们的WinDbg工具,当然你如果熟悉这个工具,那么就可以不用看了. 一丶熟悉WinDbg界面 刚开始打开WinDbg就是这个界面,现在我们打开一个32位程序,打开File菜单,看下内容 第一个,调试源文件,一般用不到,每个编译器都在带调试器,自己用自己的就好 第二个,打开一个可执行文件,很常用 第三个,附加一个进程,这个和OD很类似,当程序打开之后可以附加 现在我们用第二个,打开一个我们的可执行程序…