|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2018/4/20 23:33:10 |
标题: |
关于RTC+FireDAC压力测试 |
浏览:3961 |
|
加入我的收藏 |
楼主: |
服务器:Windows 10 Rtc642+FireDAC(RAD10.1.2) 测试机:ubuntu apache benchmark 测试数据库及表:SQLite Country表大概15字段/240条目
测试代码:FireDac(开启线程池)获取数据,由RTC转换为Json Web显示 FQuery.SQL.Text := 'SELECT * FROM Country'; FQuery.Active := True; DelphiDataSetToRtc(FQuery, rtcDS); Result.asDataSet['result'] := rtcDS; Write(Result.toJSON);
1、RtcHttpServer1.MultiThreaded:= False的情况下:正常 apache benchmark:ab -n 10000 -c 1000 http://192.168.50.1:9000/getdata
此帖子包含附件:
大小:6.8K |
----------------------------------------------
- |
作者: |
|
2018/4/20 23:35:40 |
1楼: |
2、但是开启RtcHttpServer1.MultiThreaded:= True情况下:都不正常 ab -n 100 -c 10 http://192.168.50.1:9000/getdata ab -n 100 -c 20 http://192.168.50.1:9000/getdata ab -n 1000 -c 50 http://192.168.50.1:9000/getdata
每次都是过完第一次用户数,都开始假死了。
比如 -C 10 的,会同时发送10个请求,第11请求开始就假死; -C 500的,在第501个请求就假死,之前的500个请求正常。 服务端出现假死。
----------------------------------------------
-
|
作者: |
|
2018/4/21 2:47:51 |
2楼: |
自行解决:
1、自己太傻了,用SQLite来测试,改用MSSQL2000即可。
2、改用SQL2000数据库的时候,出现了无法获取数据问题,后来才发现FireDAC组件的出现占线!打开FetchOptions.Mode:=fmAll即可
真的是太多东西要学了。艹
此帖子包含附件:
大小:23.5K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 3:29:53 |
3楼: |
我也是无聊来测试一下:
1.RTC的多线程究竟快了多少。 2.FireDac的线程池效能又怎样。
看来效果挺好的。另外如果根据2:8定律,就以这个单独业务算,可以负荷5000用户以上。 不知道我理解的对否?
1000用户并发请求,测试完对比发现几个情况 1.内存飙升快。而且几分钟也不会降下来,没空等它久点 2.RTC线程好像释放不完整一直有线程在挂着 3.firedac的FDManager获取连接数量永远是1,不清楚连接池真正起来没。
----------------------------------------------
-
|
作者: |
|
2018/4/21 11:30:45 |
4楼: |
昨晚搞的太晚,脑子浆糊了。早上起来理清思路,把问题都解决了: (而且改好后,根本与SQLite无关)
1.内存飙升快。而且几分钟也不会降下来,没空等它久点 2.RTC线程好像释放不完整一直有线程在挂着 自己代码问题,修正后解决(产生原因是FireDac线程池引起) 3.firedac的FDManager获取连接数量永远是1,不清楚连接池真正起来没 自己代码问题,原来是只利用一个FDConnection,后来改用动态创建正常了
以下是测试数据,同样按10000个总请求,不同的并发数量进行测试: PS:默认FireDac线程池大小50;SQLite Country表大概15字段/240条目
----------------------------------------------
-
|
作者: |
|
2018/4/21 11:33:47 |
5楼: |
并发:10
此帖子包含附件:
大小:22.6K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 11:34:01 |
6楼: |
并发:50
此帖子包含附件:
大小:22.7K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 11:34:12 |
7楼: |
并发:100
此帖子包含附件:
大小:23.8K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 11:34:22 |
8楼: |
并发:1000
此帖子包含附件:
大小:25.5K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 11:59:15 |
9楼: |
向各位活跃在盒子的中间件大牛致敬:全能、星5、樵夫、咏南等等。 特别是参考全能的界面。。呵呵。
此帖子包含附件:
大小:169.1K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 12:00:14 |
10楼: |
特别是参考全能的界面。。呵呵。
此帖子包含附件:
大小:242.3K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 16:59:40 |
11楼: |
才 109 request 每秒啊? 上次测试 mORMot 的blog(博客)例子,本机和远程windows VPS都四千多每秒呢。
----------------------------------------------
-
|
作者: |
cdsy (成都4友) |
▲▲▲△△ |
-
|
普通会员 |
|
2018/4/21 17:46:27 |
12楼: |
mORMot也是很牛的中间件,和RTC各有所长,主要是作者水平太高,代码写得有点反人类。
----------------------------------------------
-
|
作者: |
|
2018/4/21 21:11:50 |
13楼: |
牛b
----------------------------------------------
-
|
作者: |
|
2018/4/22 1:03:08 |
14楼: |
我只是入门而已,而且测试是FireDac带SQLite。 如果只是测试RTC的话,单台测试机,可以看下图,而且还可以同调整线程池大小
此帖子包含附件:
大小:84.6K |
----------------------------------------------
-
|
作者: |
|
2018/4/22 11:17:52 |
15楼: |
@nickemma, 上面的留言如有冒犯请见谅,没有其它的意思,只是一个直观反应,我并没有用过FireDAC和RTC。
关于sqlite,如果写操作的话,请确认开启事务模式。就单机而言,一般情况下sqlite比其它数据库更快。
----------------------------------------------
-
|
作者: |
|
2018/4/22 12:14:23 |
16楼: |
@edwinyeah
我真的是RTC新手,并没有说什么冒犯不冒犯的。哈哈
既然您提出来,我也就感兴趣去测一下罢了。
官方测试,就RTC通信而言,好像可以达到1.6W吧。或许这个会不会跟操作系统有关。
----------------------------------------------
-
|
作者: |
|
2018/4/22 12:49:36 |
17楼: |
虽然没有用过,RTC的历史我有一定的了解,十年前就感慨,它的远程函数调用,简直太方便了,也并不怀疑其性能。
如果你能科学上网,这个是国外的一个REST方面的性能测试,涉及两个Delphi的REST框架,分别是官方的DataSnap和开源的mORMot,不过没有涉及RTC,但是跟其他语言的主流框架有比较,很有参考价值:https://robertocschneiders.wordpress.com/2012/11/22/datasnap-analysis-based-on-speed-stability-tests/
----------------------------------------------
-
|
作者: |
|
2018/4/22 12:54:03 |
18楼: |
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
----------
|
作者: |
abencat (远离delphi的人) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2018/4/24 9:09:11 |
19楼: |
代码发布出来 让我们这些小白都学习一下
----------------------------------------------
delphi爱好者
|
作者: |
|
2018/4/24 9:46:09 |
20楼: |
@abencat
通信部分在RTC官网的classroom里面有 至于FireDac线程池在emb的官网也有
----------------------------------------------
-
|
作者: |
|
2018/4/27 14:54:24 |
21楼: |
小项目用Delphi的话,花点儿时间折腾折腾还是有效果的。 如果是大项目,还是赶紧出门右转吧。 具体到性能测试这块,还是去 http://www.techempower.com/benchmarks/ 看看吧。看完自然有数。
----------------------------------------------
弱小和无知不是生存的障碍,傲慢才是!
|
作者: |
|
2018/5/1 19:18:39 |
22楼: |
@yayongm
编程只是一个爱好,并非专业软件人员。
----------------------------------------------
-
|
作者: |
|
2018/5/1 19:20:41 |
23楼: |
上段时间各路中间件大神打架,我也去了瞅瞅了。
自己也上个图,最近做好的“打开表”功能。
此帖子包含附件:
大小:438.9K |
----------------------------------------------
-
|
作者: |
|
2018/5/1 19:21:05 |
24楼: |
“打开表”功能,图2
此帖子包含附件:
大小:495.7K |
----------------------------------------------
-
|
作者: |
|
2018/5/6 11:09:47 |
25楼: |
继续记录更新: 完成文件上传、下载功能。自动判断文件如果为图片类型,则放入服务器图片目录,并自动生成相应的缩略图,否则放入普通Upload目录。
此帖子包含附件:
大小:410.5K |
----------------------------------------------
-
|
作者: |
|
2018/5/9 12:57:36 |
26楼: |
继续更新:做好批量插入功能
此帖子包含附件:
大小:460.9K |
----------------------------------------------
-
|
作者: |
|
2018/7/18 14:28:58 |
27楼: |
QQ留个,请教下
----------------------------------------------
-
|
作者: |
ivvn (奔腾的心) |
★☆☆☆☆ |
-
|
普通会员 |
|
2018/7/18 17:15:36 |
28楼: |
求图标
----------------------------------------------
-
|
作者: |
|
2018/7/18 17:31:10 |
29楼: |
@hyidasoft 不是我不愿留,是很久没上QQ了。 这两年都在带二胎,编程只是有空耍耍。
你留言帖子,我有空反而会上来看看,如果能力所及都会解答的。
----------------------------------------------
-
|
作者: |
|
2018/7/18 22:29:10 |
30楼: |
请问lz做这个用途是什么, 自用? 商业销售? 免费开源?
----------------------------------------------
-
|
作者: |
|
2018/7/19 9:53:11 |
31楼: |
@hezi4delphi 自用。至于商业销售,从没有考虑过,盒子上面太多大神的中间件,我代码肤浅根本不入流。 在盒子上面记录一个过程,也算是自己学习的一个脚印。
----------------------------------------------
-
|
|