c# thread 一段时间后占满CPU

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# thread 一段时间后占满CPU相关的知识,希望对你有一定的参考价值。

软件用thread来采集网站数据,运行一段时间后就占cpu,不知道是什么问题。。程序很乱也不怎么好检查,

有sleep的,程序也能运行,就是运行几个小时后才出现的问题,我怀疑是httprequest占的cpu.不过我停止任务,cpu也没见降下来

thread 开启后 里面是一个死循环,而且循环没有Sleep(1*time),导致cpu时间片连续占用,所以CPU高了 参考技术A 你是怎么处理线程的回收机制的?也不清楚你在什么情况下开启线程,不过要注意,功能结束后立即销毁线程,要不然肯定会出现你那情况了。
还有就是多线程并发的话是占CPU的,就不清楚你出现的是哪种情况了追问

就像采集,是个无限循环,循环里面执行采集任务。几秒采集一次。有很多采集任务。

追答

那就应该是线程并发的太多了
采集功能结束后销毁进程了吗?

追问

嗯,我调试下。

本回答被提问者和网友采纳
参考技术B dyhh追问

??

追答

thread 开启后 里面是一个死循环,而且循环没有Sleep(1*time),导致cpu时间片连续占用,所以CPU高了
.

追问

晕。

追答

什么啊 本来就是啊

参考技术C 感觉是死循环了。。在thread加上断点 或者做一些一些用于定位的控制台输出
很容易就可以找到哪里死循环了

centos的linux运行一段时间就假死了

服务器机器安装的centOS5.5(非虚拟机安装)。在自己的机器上用Tera Term,WinSCP连接服务器一段时间后就没有响应了。服务器端的桌面也死机了。
但是用dos命令ping服务器是有相应的,而且访问服务器启动的apache服务是有相应的。

ps看看进程状态。。
然后top看看进程cpu利用率,内存占有率....确定是不是进程死了,还是cpu和内存占满了。
然后分析tail -f /var/log/messages| grep fail看看有什么线索。。。
如果分析不了,估计日志也死了,因为Linux里的日志系统syslogd和klogd都是系统服务。
所以如果真的死机,针对RHEL4系统可能要配置netdump,针对RHEL5需要配置kdump或者是xendump,这样可以尝试在系统死掉的时候把内存镜像整个抓出来分析。

注:如果经常出现这样的问题,但文本模式能用,可能是显卡问题了。。追问

显卡问题会导致用WinSCP连接linux服务器都连不上?

追答

连上文本编辑模式,等它假死后,看看你文本模式能不能用,能用,就看看进程状态,确定是不是就死,在看cpu,内存。然后监听ssh服务。这只是给你一个思路。不行就看日志吧。像这种情况日志里面都能找到报错的。仔细看。
建议不要用winscp。像你这种情况一般就是winscp原因或显卡。。慢慢排吧!

参考技术A 这个笔记本的话。最好的就是用联想的笔记本。。支持性而言较好的。
如果是其它笔记本的话。最好就是直接安装(这个安装是先将硬盘全盘格式化后再分区安装windows与linux),这样安装后问题会少很多 。。而且安装的时候一定要注意一下安装的/boot的公位置。然后在windows里面用windows来启动linux。。方便又简单。。、、追问

整个台式机就一个linux系统

追答

你是装的什么发行版的Linux??

追问

CentOS5.5

追答

如果是这样的话那应该是你的硬件的驱动原因,,你是用的第三方驱动来驱动桌面??显卡是哪种?

追问

这台机器以前是windows系统,我把它完全格式化以后用CentOS安装的。如果我需要重新安装驱动,需要安装哪些硬件的驱动?

追答

如果你是用的NVIDIA的显卡,那么你最好安装一下驱动。其余的驱动基本上不要改动。。

追问

好,我去试试

这台机器是集成显卡。如何判断该装哪个驱动

追答

集成显卡的话基本上不会有问题的。。这个你查看一下官方的手册看看。。有些硬件对于linux系统是有问题的。。有些主板也是一样的。你去查看一下。。

参考技术B 只是桌面死了?
服务器为什么要桌面
有什么问题要看日志
如果命令行模式能用,可以试试重启下桌面

openrc: /etc/init.d/gdm(看你是gdm,kdm,lightdm了) restart
systemd: systemctl restart gdm追问

桌面死机导致任何连接方式都不能用。

以上是关于c# thread 一段时间后占满CPU的主要内容,如果未能解决你的问题,请参考以下文章

VS2015安装后占多少内存?是安装啥版本的好?

网站CPU占满,微信经常SSL不能建立的错误排查

C#异步编程----Thread

如何让C#程序在执行中暂停一段时间

如何在 C#(托管代码)中获取 *THREAD* 的 CPU 使用率和/或 RAM 使用率?

c#编写的winform的时候怎么让程序等待一段时间~!