【Windbg】记一次线程卡主的问题
测试告诉我们定时任务没有执行了,排查相关日志,只有开始执行,没有执行结束。估计是什么地方卡主了。
所以dump分析日志
先检查一下加载情况
!eeversion

线程卡主了,先看线程
!runaway

有两条线程时间挺长的。有一条是我们的调度常驻线程。时间成是对的,另一条应该就是卡主的。
先看第一条
~15s
!clrstack

果然这个最长的是调度线程看另外一条

另外一条好像是在等socket数据。 看这个函数不是我们这边负责的,是更底层的人。底层的人反馈说这个时长不一定是卡主了,他是重复利用的,可能是累计起来的
那是不是。因为这条线程重复利用。然后累计的时间比较长呢?

第二条跟第三条线程时间差的太多了,应该不是。
那么他真的是卡主了很久嘛?

这里有一个变量时间。转换一下格式之后的时间与卡主的数据的时间。是相等的,基本上可以断定他就是卡在这里很久很久。
底层的人员反馈,正常情况不会出现卡主的。就算是网络调用失败了一般一分钟就会爆超时异常。短时间内没有给出原因。
仔细研究一下这个函数的代码。

组装搜索条件的时候出错了。底层返回数据的时候呢就没有出错了,因为是逻辑错误没有奔溃。然后出错了也没有将IsLastData设置为最后一页,所以没有地方跳出循环。然后就卡死在这里了。
至此真想大白,是我们的条件写的有问题,死循环了,而不是最开始定位的Socket 长时间未响应。
关于这种死循环取数据的,一定要设置通用的跳出条件,一般情况下可以设置Deadline 设置某一个时间内还没有执行完的话,跳出,可以设置尝试重试次数,比如说1000次,还没有结论,就跳出。然后记录Debug日志,方便将来断言这个地方确实是有问题。然后尝试修复这个问题。
【Windbg】记一次线程卡主的问题的更多相关文章
- delphi 一个线程和主界面的交互的演示代码
求一个线程和主界面的交互的演示代码求一个线程和主界面的交互的演示代码.线程和主界面处于两个Unit.线程中的user中不能引用主窗口.我只是想学习一下,线程和主界面交互的方法.去网上查了好几天资料,能 ...
- mysql 启动卡主,cpu 100%
[mysql@mysqlhq scripts]$ cat /etc/redhat-release Kylin Linux release 3.3.1707 (Core) mysql version S ...
- flutter 命令卡主的问题
情况 1 镜像的问题 如果你的镜像已经设置,却仍然卡主,那么请参考情况 2 这种情况在中文官网上已经有了,并且有这修改镜像的方法,附上链接: https://flutter.cn/community/ ...
- 项目git commit时卡主不良代码:husky让Git检查代码规范化工作
看完 <前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) https://www.cnblogs.com/Yellow-ice/p/15349873 ...
- 利用windbg 分析IIS 的线程池w3wp程序多线程挂起问题
前几天有个朋友发个了在windows server 2008跑的IIS 跑的程序w3wp程序dmp,要我帮忙分析为何线程都挂起不运行 经过查阅资料用windbg可以调试可以输出线程的调用堆栈,但是准备 ...
- C#用副线程改主线程(UI线程)的控件属性的方法(包括Winform和WPF)
C#用副线程去试图修改主线程的UI控件会报出异常,解决方案是使用副线程注册事件通知主线程自己去修改UI控件 在winform中,方法如下 private void button1_Click(obje ...
- 2017-11-29 由runnable说起Android中的子线程和主线程
1.首先纠正一个观点,就是runnable运行在子线程中是错误的观念.runnable只是创建了一个执行任务的对象,但是它本身并不会创建一个新的子线程,Runable只是给你接口让你实现工作线程的工作 ...
- Qt5中运行后台网络读取线程与主UI线程互交
项目中有一个需求就是,因为需要请求服务端数据,因为网络的读取会阻塞,所以该过程不能放在Qt中的UI主线程当中,需要用一个后台线程来读取数据,数据准备完毕后 在通过Qt5中的信号槽机制来跨线程的传递数据 ...
- Android 线程与主线程
网络连接需要时间.Web服务器可能需要1~2秒的时间来响应,文件下载则耗时更久.考虑到这个因素,Android禁止任何主线程网络连接行为.即使强行为之,Android也会抛出NetworkOnMain ...
随机推荐
- 结合Vue.js的前端压缩图片方案
这是一个很简单的方案.嗯,是真的. 为什么要这么做? 在移动Web蓬勃发展的今天,有太多太多的应用需要让用户在移动Web上传图片文件了,正因如此,我们有些困难必须去攻克: 低网速下上传进度缓慢,用户体 ...
- SVG里的几个实用动画元素的用法
由于刚刚接触svg,在w3school和菜鸟教程上面的简直是入门的入门,过于简洁,完全不利于学习,所以不得不在网上找了一些文章和资料来看看,对于svg动画这部分完全可以跟css3动画抗衡,现在整理一下 ...
- 腾讯云+社区开发者大会开启报名,WeGeek 邀你一起聊聊小程序
刚满 2 岁的微信小程序,正给我们带来一种全新轻便的生活方式. 内测时的青涩还历历在目,到现在,小程序生态已日渐成熟.超过 150 万开发者在这里找到了自己的新天地,打磨出超过 100 万个小程序. ...
- react开发教程(六)React与DOM
ReactDOM findeDOMNode 语法:DOMElement findDOMNode(ReactComponent component)描述:获取改组件实例相对应的DOM节点 案例: imp ...
- 【weex开发】vue-swipe 滑动组件的使用
一,vue-swipe简介 vue-swipe 是饿了么团队开发的vue专用的轮播图插件: 可以实现简单的图片和view轮播,可控制动画时长,可限制手动滑动: 简而言之,可以实现轮播,也可以实现ppt ...
- Shiro之权限管理的概念
文章目录 前言:什么是shiro 一.什么是权限管理? 举例 二.权限管理的具体分类 1.身份认证 2.授权 总结 前言:什么是shiro Apache Shiro 是一个开源安全框架,提供身份验证. ...
- Codeforeces 13B
计算几何二维基础
- 状态机引擎在vivo营销自动化中的深度实践 | 引擎篇02
本文是<vivo营销自动化技术解密>的第3篇文章,分析了营销自动化业务背景和状态机引入原因.状态机的三种基本实现方式,同时介绍了几种业界流行的开源状态机框架实现和特点,以及在项目开发过程中 ...
- 可怕!CPU暗藏了这些未公开的指令!
大家好,我是轩辕. 我们知道,我们平时编程写的高级语言,是经过编译器编译以后,变成了CPU可以执行的机器指令: 而CPU能支持的指令,都在它的指令集里面了. 很久以来,我都在思考一个问题: CPU有没 ...
- 【CSAPP】Data Lab实验笔记
前天讲到要刚CSAPP,这一刚就是两天半.CSAPP果然够爽,自带完整的说明文档,评判程序,辅助程序.样例直接百万组走起,管饱! datalab讲的是整数和浮点数怎么用二进制表示的,考验的是用基本只用 ...