当前位置: 技术问答>linux和unix
我开发了一个程序,在LINUX下,会自动死掉,请问可能什么原因?
来源: 互联网 发布时间:2015-12-26
本文导语: 用QT开发的,TCP程序,MYSQL. 在WINDOWS下测试运行了2天没死,数据库中一个表记录了100多万条记录. 用性能监视器测试CPU,内存都正常 配置:WINDOWS2000+SP4+PIIII2.4+512 但在LINUX下,运行1-2个小时就死掉了. 它不是突然死掉的,开始都...
用QT开发的,TCP程序,MYSQL.
在WINDOWS下测试运行了2天没死,数据库中一个表记录了100多万条记录.
用性能监视器测试CPU,内存都正常
配置:WINDOWS2000+SP4+PIIII2.4+512
但在LINUX下,运行1-2个小时就死掉了.
它不是突然死掉的,开始都是正常的,快死的时候,用top看,sy和wa占用了大部分的CPU,剩余内存2M,剩余swap0M,load ave10左右,进程kswapd0有时会是R状态.并且有时候MYSQL也会死掉.
配置:LINUX redhat+PI300M+128M
在WINDOWS下测试运行了2天没死,数据库中一个表记录了100多万条记录.
用性能监视器测试CPU,内存都正常
配置:WINDOWS2000+SP4+PIIII2.4+512
但在LINUX下,运行1-2个小时就死掉了.
它不是突然死掉的,开始都是正常的,快死的时候,用top看,sy和wa占用了大部分的CPU,剩余内存2M,剩余swap0M,load ave10左右,进程kswapd0有时会是R状态.并且有时候MYSQL也会死掉.
配置:LINUX redhat+PI300M+128M
|
占用了大部分的CPU,剩余内存2M,剩余swap0M,load ave10
说明你的程序问题,不停的在作什么事,造成CPU占用率高,页面缺页率高,而且内存也没有释放。
而且会退出说明,你在不停的申请某种资源,最终系统不堪重负时自然会出问题。
另外说这句“看来没人知道了!唉...”的时候,别人得到了多少信息?没有足够的信息谁能知道什么?只有这些现象,大家也只能给个可能造成这种现象的原因而已。
线程资源没释放为什么在WINDOWS下没有?!
第一Linux下并没有真正实现线程,至少是内核没有实现。但是只要你的线程退出pthread库都会回收的。
数据库的资源没释放倒是有可能,但是这好像应该是系统的事情吧!
你凭什么让系统回收资源?它怎么知道你不用这些资源了?so,资源是自己释放,表学用Java虚拟机的思想来考虑问题
说明你的程序问题,不停的在作什么事,造成CPU占用率高,页面缺页率高,而且内存也没有释放。
而且会退出说明,你在不停的申请某种资源,最终系统不堪重负时自然会出问题。
另外说这句“看来没人知道了!唉...”的时候,别人得到了多少信息?没有足够的信息谁能知道什么?只有这些现象,大家也只能给个可能造成这种现象的原因而已。
线程资源没释放为什么在WINDOWS下没有?!
第一Linux下并没有真正实现线程,至少是内核没有实现。但是只要你的线程退出pthread库都会回收的。
数据库的资源没释放倒是有可能,但是这好像应该是系统的事情吧!
你凭什么让系统回收资源?它怎么知道你不用这些资源了?so,资源是自己释放,表学用Java虚拟机的思想来考虑问题
|
又见弱智问题。
摆脱,就算是同一个库函数,在UNIX和LINUX下的表现都是不一样的,比如sem;更不要说是windows和LINUX之间了,比如itoa。程序死掉了,可以是线程库没有用正确,可以是内存泄漏,可以是某个调度判断或递归之类的东西陷入了死循环。
windows下运行正常???那什么也不能证明!LINUX的基础调度们都经过n年测试了,到你这里才有问题么?
摆脱,就算是同一个库函数,在UNIX和LINUX下的表现都是不一样的,比如sem;更不要说是windows和LINUX之间了,比如itoa。程序死掉了,可以是线程库没有用正确,可以是内存泄漏,可以是某个调度判断或递归之类的东西陷入了死循环。
windows下运行正常???那什么也不能证明!LINUX的基础调度们都经过n年测试了,到你这里才有问题么?
|
内存泄漏?
|
有内存泄漏的嫌疑,而且嫌疑最大
也有可能你的swap区不够用,但可能性不大 :)
也有可能你的swap区不够用,但可能性不大 :)
|
1、内存泄漏
2、MySQL使用问题
3、MySQL本身问题?
2、MySQL使用问题
3、MySQL本身问题?
|
可能线程资源没有释放,
或数据库的资源没有释放。
或数据库的资源没有释放。