首页 新闻 赞助 找找看

有哪些原因会导致winform程序所有线程不定时挂起?

0
悬赏园豆:80 [待解决问题]

程序在运行过程中会不定时挂起几百毫秒,然后会自动恢复,查到比较多的情况是GC自动回收会引起这个问题,在代码中加上手动强制回收确实会出现挂起的情况,但是在日志打印了GC回收的计数器,挂起并没有跟强制回收有正相关的证据,就是说这个业务过程中出现了挂起,但是GC回收 1代2代的计数都没有增加。
想请教一下各位大神,还有没有其他原因会导致所有线程挂起

NEAVERS的主页 NEAVERS | 初学一级 | 园豆:20
提问于:2020-10-16 14:48
< >
分享
所有回答(3)
0

线程的sleep方法也会导致

E行者 | 园豆:1761 (小虾三级) | 2020-10-16 14:56

所有线程,软件正常跑起来有五十几个线程,sleep只是当前线程吧,问题是五十几个线程全部挂起几百毫秒,然后又都恢复正常

支持(0) 反对(0) NEAVERS | 园豆:20 (初学一级) | 2020-10-16 17:03
0

dump 文件,查看下当时程序在干什么应该就清楚了

通信的搞程序 | 园豆:1747 (小虾三级) | 2020-10-19 09:31
0

这个可能的原因太多了, 比如GC, lock, io(network, file), 主机CPU不够用, 外部程序主动挂起你的进程(比如dump操作)等等.

可以考虑做个监控脚本,监控你的程序如果超过多少毫秒没有更新就触发dump, dump下来应该可以看的比较清楚.

czd890 | 园豆:14292 (专家六级) | 2020-10-19 18:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册