服务器配置: IBM 206 单CPU单核的 内存1GScktSrvr.exe: Thread Cache Size=10, Inactive Timeout=0 数据库: 采用 ms sql 2000,服务器端的数据集控件都采用ADO的(和TDataSetProvider都放在远程数据模块上), 所有的ADO数据集控件连接到一个DataModule上的TADOConnection;远程数据模块: 采用ciMultiInstance实例, 线程模型为tmApartment, 
在initialization使用多线程来创建的,以成为多线程的应用服务器程序.客户端数据提交和更新大部都通过SQL语句实现的,所以远程数据模块实现了方法function ExecuteSQL(const stSQL: WideString): Integer; safecall;以供客户端远程调用, 为了加快响应速度, 
函数ExecuteSQL采用了win32 API CreateThread函数 创建多线程来执行SQL 语句.
这样一来,就不必要一定要等到服务端执行完SQL才响应客户端程序,也实现了多条SQL语句并行执行,客户端的数据提交和更新速度就明显加快.目前客户端的连接数为10个左右,客户端的速度还不慢,但经常出现以下现象:
1.客户端程序在向服务器端提交数据或从服务器获取稍大量数据就会出现没响应,但不会影响其它客户端的正常使用,从任务管理器关掉后再打开又可正常使用了
2.某客户端在向服务器端提交数据或从服务器获取稍大量数据就会出现没响应,其它客户端程序和服务器端程序也都没响应,,必须重新启动服务器端程序才可使用.请大家谈谈如何解决服务器端和客户端经常出没响应的问题, 
如何使分布式系统更加稳定, 先谢谢了 ^_^

解决方案 »

  1.   

    1.多线程的同步问题;
    2.D7的ScktSrve.exe好像有问题;
      

  2.   

    1)中间层不支持超线程可能会导致客户端无响应(关闭超线程)
    2)D6、D7的ScktSrve.exe存在一些问题,改用2005的试试
    3)网络状况不好,经常丢包也会有这个问题
      

  3.   

    建议你web服务了,走soap协议。
      

  4.   

    是否查过sql 可能会出现死锁的现象
      

  5.   


    呵呵,SOAP协议,据我所知,效率比不上吧.