我用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换成普通的二层直连了.请各位指点.谢谢!