xe2 datasnap测试后的一些确认

1.TCP/IP心跳包,XE2 DATASNAP本身已内置,设置几个属性就可以,这个经过了测试。不再需要像DELPHI 2010 DATASNAP那样要自己写代码来处理。

 

2.XE2 DATASNAP内置的线程池是使用的INDY10的线程池。INDY10是阻塞+多线程的通讯控件。实际测试当中发现DATASNAP是一个客户连接对应一个线程,

一直到客户连接断开线程才归还线程池中,就算一个客户连接以后啥事也不干,也要一直地占用服务端一个线程对象。有多少个连接客户,服务端就要开启多少个

线程。如果客户数量比较多的话,这样是很没有效率的。开启的线程较多,CPU的时间都花在线程的上下文切换上面。所以在大量并发连接的时候,还是首选完成端口。

 

3.DATASNAP的线程池满了以后,新开的客户是连接不上服务器的。这时客户的鼠标一直呈等待状态,不会弹出任何提示信息,如果此时有客户关闭连接,

那么处于等待状态的客户就会自动连接上服务器。所以设置了线程池的MaxThreads属性以后也就设定了最多的并发连接数量。

 

4.实际测试当中,开四百个左右的客户端,每个客户端随机地每隔一秒钟向服务器发出(查询、新增、修改、提交)请求,长时间运行以后,应用服务器仍然健壮地

运行,顶不住的是SQL SERVER 2000数据库服务器,会报等待处理的队列过长的错误,SQL SERVER 2000数据库自动暂停服务,需要手工启动以后才能运行。

这说明,真正大量并发的(查询、新增、修改、提交)操作数据的事件会导致数据库当机。对于企业应用来说真正需要处理的是数据,对于企业应用架构来说,要

考虑的不仅仅是中间层应用服务器,还有数据库服务器的承受能力。

posted @ 2012-06-21 15:14  delphi中间件  阅读(5421)  评论(1编辑  收藏  举报