If you know DataSnap, probably you know the famous post by Roberto Schneiders about its stability problems (http://robertocschneiders.wordpress.com/2012/11/22/datasnap-analysis-based-on-speed-stability-tests/).
Now, after some (right) dust cloud, in the Update 1 Embarcadero fixed some bugs.
I still haven’t the time to do an heavy test but the first “fast-and-dirty” test give some results, and I’d like to share my little tests.
I created a simple “DataSnap REST Application” as a VCL Application.
Start a little test with ApacheBenchmark (you can find it in the Apache HTTPD installation directory).
Run the test… and, exception at the 32° connections, just as before the update. However this is not a “bug”, it is simply a problem related to the default wizard configuration.
So I changed the MaxConnection to 1024. This number is very high (for a simple PC) but I’m interested in the concurrency problems, so I’ve to push the concurrency far enough to che the Update 1 Fixes.
Also, I’ve disabled the session with a little change in the “EchoString” method (as suggested by Marco Cantù in his blog post about DataSnap problems).
Now the test results are good. As I said, my objective is not to check the performance or other problems arised from the Roberto tests. My test is just about the concurrency problems (IMHO the biggest one) and the related crash.
Here the Apache Benchmark tests with 100000 requests with 100 concurrent connections.
D:wampbinapacheapache2.2.22bin>ab -v 1 -n 100000 -c100 http://127.0.0.1:8080/datasnap/rest/TServerMethods1/EchoString/Daniele This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests Completed 40000 requests Completed 50000 requests Completed 60000 requests Completed 70000 requests Completed 80000 requests Completed 90000 requests Completed 100000 requests Finished 100000 requests Server Software: Server Hostname: 127.0.0.1 Server Port: 8080 Document Path: /datasnap/rest/TServerMethods1/EchoString/Daniele Document Length: 22 bytes Concurrency Level: 100 Time taken for tests: 465.320 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 18966732 bytes HTML transferred: 2200000 bytes Requests per second: 214.91 [#/sec] (mean) Time per request: 465.320 [ms] (mean) Time per request: 4.653 [ms] (mean, across all concurrent requests) Transfer rate: 39.81 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 11.8 0 529 Processing: 2 464 230.4 500 2041 Waiting: 1 457 216.6 499 1922 Total: 2 465 230.8 501 2041 Percentage of the requests served within a certain time (ms) 50% 501 66% 565 75% 609 80% 637 90% 699 95% 769 98% 1008 99% 1039 100% 2041 (longest request)
I certainly will do other tests, however this fast-and-dirty test gave me a good impression.
More to come.