我用Delphi6开发Midas,数据库是oracle9.应用服务器端采用的是Database+Query+DataSetProvider.对于服务器的socket server,设置线程数为150,超时时间为0(无穷).客户端采用的是SocketConnection+ClientDataSet.现在的问题是一旦连续运行几天或使用次数频繁一些,midas就会出现各种问题:最常见的是阻塞,比如某次查询始终没有结果返回,导致客户端程序无响应;有时客户端程序关闭后,服务器上对应的midas却没有关闭,形成垃圾连接.这样的连接一多,又会阻塞下一次客户程序的使用,导致其它客户端的数据库访问无法进行;或者某个midas占用了大量的CPU,导致服务器死机.
我在客户端的midas使用方法如下:
with ClientDataSet do
begin
Close;
DataRequest(sql);
Open;
First;
while not Eof do
begin
......
Next;
end;
end;
我不知道现在midas不稳定是否和这样的使用方式有关.此模块已经试运行了大半年,几乎所有的问题都和midas相关.现在由于开发人员一直在现场维护,一旦有问题,关闭所有的客户端,清理服务器上所有残留的midas及其连接,再重开客户端.但这种方法肯定是不行的.如果没有更好的解决方法的话,也许只有下决心把所有的midas换成普通的二层直连了.请各位指点.谢谢!
我在客户端的midas使用方法如下:
with ClientDataSet do
begin
Close;
DataRequest(sql);
Open;
First;
while not Eof do
begin
......
Next;
end;
end;
我不知道现在midas不稳定是否和这样的使用方式有关.此模块已经试运行了大半年,几乎所有的问题都和midas相关.现在由于开发人员一直在现场维护,一旦有问题,关闭所有的客户端,清理服务器上所有残留的midas及其连接,再重开客户端.但这种方法肯定是不行的.如果没有更好的解决方法的话,也许只有下决心把所有的midas换成普通的二层直连了.请各位指点.谢谢!
解决方案 »
- 求帮忙解释下代码
- 请教,调用MDICHILD的问题!
- Delphi有没有类似Java的JavaDoc?
- 面试题:COM与COM+的区别??请大虾指点;
- 用ADOStoredProc调用参数是日期的存储过程报错,真的搞不定了,求助。
- 推荐收支票最可靠的中文站
- 欲编一个测试打字速度的小软件,求测每分钟打字速度的公式!(200分相送。)
- windows 的 正在复制 界面如何做的?
- 难题!关于图象加文字存入数据库的问题!
- 這個錯誤怎樣解決﹕(ADOQuery1: Command Text does not return a result set.)
- 急!急!急!谁有ClientDataSet生成XML后,此XML的文档资料?
- 怎样才在能在dbgrid的picklist象datetimepicker一样显示并选择日期
http://www.cnkernel.com/wncx.rar