加载中…

加载中...

使用datasnaprest时开启Firedac连接池功能

转载 2020-04-28 08:12:50
标签: firedac 数据库连接池 datasnap

查了网上很多代码都不行,从delphi 10.3中帮助文件,直接抄写现成代码。​

新建一个datasnap rest server ,然后在项目中建一个数据模块ConnectDM,在数据模块中放置FDConnection等组件。

​请注意:数据模块中可以放置公共组件,请不要放在数据模块ServerMethodsUnit1单元中,因为这个单元会为每个连接生成一个实例,这个可在该模块的oncreate事件中写代码证实确实每次连接都会触发一次oncreate事件,前提是DSServerClass1的lifecycle设置为session生命周期。​

现在在ConnectDM的oncreate写这样的代码:​

procedure TConnectDM.DataModuleCreate(Sender: TObject);

var

oDef: IFDStanConnectionDef;

oParams: TFDPhysMSSQLConnectionDefParams; // MSSQL connection params

const cNameConnDef = 'MSSQL_Connection';

begin

// Adding new persistent connection to fdconnectiondefs.ini

FDManager.ConnectionDefs.AddConnectionDef;

oDef := FDManager.ConnectionDefs.AddConnectionDef;

oDef.Name := cNameConnDef;

oParams := TFDPhysMSSQLConnectionDefParams(oDef.Params);

oParams.DriverID := 'MSSQL' ;

oParams.Database := 'Adj';

oParams.UserName := 'MyminUser';

oParams.Password := '20513';

oParams.Server := '212.225.153.74,3228';

oParams.Pooled:=true;//这里开启

oParams.PoolCleanupTimeout:=0;

oParams.PoolExpireTimeout:=0;

oParams.PoolMaximumItems:=100;

//oParams.MARS := false;

//oDef.MarkPersistent;

oDef.Apply;

FDConnection1.ConnectionDefName := cNameConnDef;

FDConnection1.Connected := True;

end;​

注意,有时重启项目时会提示'MSSQL_Connection'重复,请找到C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini,删除'MSSQL_Connection'节点即可。

最后,发布该应用项目时,可以不带​FDConnectionDefs.ini(这个我自己没搞懂为什么可以让'MSSQL_Connection'不写入FDConnectionDefs.ini)。​

怎么证实开启了数据库线程池呢?​将有数据库查询操作的datasnap rest编译项目放在服务器上,用JMeter测试其中访问数据库查询的函数网页,如果将Jmeter中线程组的线程数据设为300,而oParams.PoolMaximumItems:=100;此时测试Jmeter会提示出错,{"error":"[FireDAC][Stan]-708. Cannot acquire item (connection) from pool. Maximal number [100] of simultaneous items (connections) reached."},意思是 {“错误”:“[FireDAC][Stan]-708。无法从池中获取项(连接)。已达到同时项(连接)的最大数目[100]。“}

)如果修改为300则不出错。

阅读(0) 评论(0) 收藏(0) 转载(0) 举报/Report

评论

重要提示:警惕虚假中奖信息
0条评论展开
相关阅读
加载中,请稍后
姝ユ儕浜
  • 博客等级:
  • 博客积分:0
  • 博客访问:10,636
  • 关注人气:0
  • 荣誉徽章:

相关博文

推荐博文

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有