首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi xe3 的datasnap 性能跟稳定性真的这么差吗

2013-07-01 
delphi xe3 的datasnap 性能和稳定性真的这么差吗?有个应用要做成分布式的,客户端数目500左右。尝试用XE3的

delphi xe3 的datasnap 性能和稳定性真的这么差吗?
有个应用要做成分布式的,客户端数目500左右。

尝试用XE3的 Datasnap 开发应用服务器,后台数据库sql 2008.

测试说明:
1、服务器架在局域网的一台 dell 小型服务器上。

2、客户端测试程序 Test.exe ,就一个按钮:
    SQLConnection1.DriverName := 'DataSnap';
   SQLConnection1.Params.Clear;
   SQLConnection1.Params.Values['CommunicationProtocol'] := cbbProtocol.Text;
   SQLConnection1.Params.Values['HostName'] := cbbHostName.Text;
   SQLConnection1.Params.Values['UserName'] := '';
   SQLConnection1.Params.Values['Password'] := '';
   SQLConnection1.Params.Values['Port'] := editPort.Text;

   for i := 1 to 100 do
   begin
        SQLConnection1.Open;

        ClientDataSet1.Close;
        ClientDataSet1.DataRequest(MemoSql.Text);
        ClientDataSet1.Open;

        SQLConnection1.Close;
   end;
   
   sql语句执行的结果是取得 3600 条数据,字段数 8 个。单个客户端执行的话没有问题,同时启动300个客户端的时候,很难稳定执行。要么,拒绝连接,要么 Login 超时,要么直接服务器内部错误,一旦出现内部错误,客户端就再也连接不上了。服务器端的 PoolSize 已经设置为 1200 了。

   我的意思是,服务器可以很忙,可以让客户端程序等待,但是绝对不能出现错误,我之前用过C#的 Remoting 和 WCF 做过类似测试,很稳定。

   有哪位用过 Delphi 2010 版本以后的 Datasnap,出来指点一下。
[解决办法]
 SQLConnection1.Open 耗时很长,有时甚至要达几秒,连接上就不要断开了。共用连接是必须的。
[解决办法]
我也开发分布式系统,欢迎探讨
[解决办法]
SQLConnection1.Open 耗时很长,有时甚至要达几秒,连接上就不要断开了。共用连接是必须的。 
造成这个
[解决办法]
RemObjects吧!
[解决办法]
这个情况跟后端连数据库的驱动有关系。
[解决办法]
如果200个人同时请求3600条数据,而服务器如果产生200个线程去取,如果数据库连接驱动不合理,直接提交10M的socket接收,系统的锁定页面内存池和非页面内存池很容易用尽。导致内核执行失败,各种未知问题都会出现。。。。
做三层要想工业强度的稳定性和可控性,还是得自己用socket开发中间层,而且对数据库的连接也要很慎重。
另外你3600条取回来也不合理。三层开发的模式就是倾向于瘦客户端,计算完了把结果输出到客户端,你取那么多数据回来做甚。
datasnap的可靠性也是基于一定的环境基础的,如果不加限制的使用,什么服务器都会挂。
[解决办法]
我用了,还是很稳定的,
楼上说得对。
[解决办法]
把连接方式设为:INVOCATION,  默认为:SESSION
采用线程池体系结构,
估计会有大的改善。

[解决办法]
我用了,很稳定,主要是代码的效率如何。 

热点排行