各位大师,我有一病于心头多日,始终不得其解。我们在W2K+SQLSERVER2000+VC6下开发的COM+应用程序,大多数情况下运行正常(10/100M的LAN环境),但有时候CLIENT端调用SERVER端的组件(不一定是哪个)时,在CLIENT端会出现程序无反应,作死机状;此时观察SERVER端COM+组件状态,发现其调用时间在不断增长;这时如有其他的CLIENT调用此组件,也作死机状;这是如果停止整个组件并重新启动,又恢复正常。最令我不安的是这种情况无法预期,我不知道什么时候会发生。目前程序处于试运行阶段,只有不到10个CLIENT,SERVER的CPU及内存都足够大,网络也正常;另外,我还做了组件的POOLING,不知有无关系。我自己推测可能有几方面原因:1、组件本身有问题;2、CLIENT调用方式有问题;3、组件运行的环境设置有问题;但无法确定。
大多数的组件事务类型都是NOT SUPPORTED.只有一个组件使用的事务类型是REQUIRED.程序中是通过setcomplete、setabort、enablecommit和disablecommit显式控制事务的提交回滚操作.
另外我发现在COM里故意写个死循环就能造成上述现象!
请各位老师不吝赐教,多谢!^_^
大多数的组件事务类型都是NOT SUPPORTED.只有一个组件使用的事务类型是REQUIRED.程序中是通过setcomplete、setabort、enablecommit和disablecommit显式控制事务的提交回滚操作.
另外我发现在COM里故意写个死循环就能造成上述现象!
请各位老师不吝赐教,多谢!^_^
还有看看假死的时候SERVER和CLIENT上的程序CPU占用情况,如果有一方100%,那么你应该能确认是那边的问题了.
还有可能就是不响应也会表现为假死,但这时不会出现CPU100%的情况.
具体问题具体分析,再自己研究一下吧.