最近一直在研究一个疑难问题,公司以前开发的一个实时串口程序,运行1天左右整个电脑都崩溃了,测试了蛮久啦,原因还是不太明显。首先排查代码,因为是DELPHI7的多线程程序,所以开始担心是多线程下资源没有释放导致。但排查后,是发现一些地方有问题,但还是没有解决问题。随后跟踪了SQL,发现其内存有缓慢增加的迹象,尝试着调整了下其内存占用,效果是好了点,但还是不能跨天运行。
目前的进展是通过排查WINDOWS日志和程序日志,发现了一个问题。就是程序的一个实时线程的优先级非常高,而SQL又要操作IO,有可能因为线程调度后出现错误导致WINDOWS宕机。目前正在尝试的方式是:
修改SQL的文件增长方式为定量,修改SQL的CPU只选择一个CPU0,修改其内存占用方式为固定大小。等着看明天的结果,目前的情况是大约2小时增长6M大小的内存,目前是50M,分配了100M。

还有最后一招没用,没有试过。最近补习了下WINDOWS编程,了解些进程和线程的管理,打算调整WINDOWS的前后台线程时间片大小来优化SQL的IO响应,保证SQL的关健系统线程不发生致命错误。

现在越来越感觉底层的东西复杂,要花费很多精力,基本没有时间去学习新控件、新的开发工具程序啦。

posted on 2008-09-16 14:58  小猴子  阅读(318)  评论(4编辑  收藏  举报