Yeah, I just noticed that on my jetty console. Bummer. On Mon, May 4, 2009 at 3:59 PM, David Pollak <feeder.of.the.be...@gmail.com>wrote:
> Derek, > Please note that about half of the requests failed in Jetty. Jetty does > not seem to be explicitly closing the NIO sockets leading to an out of IO > descriptor problem... that's why I used Tomcat. > > Thanks, > > David > > > On Mon, May 4, 2009 at 2:47 PM, Derek Chen-Becker > <dchenbec...@gmail.com>wrote: > >> Just to throw in another data point, I ran the tests on my AMD Phenom X2 >> 720 (3 cores, 6GB of RAM): >> >> I generated the archetype exactly as you have it here. >> >> Ran "mvn -Drun.mode=production -Djetty.port=9090 jetty:run" >> >> Output from Apache Bench: >> >> $ ab -c 10 -n 20000 http://192.168.2.254:9090/user_mgt/login >> 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 192.168.2.254 (be patient) >> Completed 2000 requests >> Completed 4000 requests >> Completed 6000 requests >> Completed 8000 requests >> Completed 10000 requests >> Completed 12000 requests >> Completed 14000 requests >> Completed 16000 requests >> Completed 18000 requests >> Completed 20000 requests >> Finished 20000 requests >> >> >> Server Software: Jetty(6.1.16) >> Server Hostname: 192.168.2.254 >> Server Port: 9090 >> >> Document Path: /user_mgt/login >> Document Length: 3635 bytes >> >> Concurrency Level: 10 >> Time taken for tests: 37.110 seconds >> Complete requests: 20000 >> Failed requests: 10191 >> (Connect: 0, Receive: 0, Length: 10191, Exceptions: 0) >> Write errors: 0 >> Total transferred: 79276096 bytes >> HTML transferred: 72626584 bytes >> Requests per second: 538.94 [#/sec] (mean) >> Time per request: 18.555 [ms] (mean) >> Time per request: 1.855 [ms] (mean, across all concurrent requests) >> Transfer rate: 2086.18 [Kbytes/sec] received >> >> Connection Times (ms) >> min mean[+/-sd] median max >> Connect: 0 0 0.0 0 1 >> Processing: 1 18 40.8 11 1428 >> Waiting: 1 18 39.9 11 1414 >> Total: 1 19 40.8 11 1428 >> >> Percentage of the requests served within a certain time (ms) >> 50% 11 >> 66% 16 >> 75% 20 >> 80% 23 >> 90% 36 >> 95% 54 >> 98% 78 >> 99% 100 >> 100% 1428 (longest request) >> >> >> On Mon, May 4, 2009 at 3:16 PM, David Pollak < >> feeder.of.the.be...@gmail.com> wrote: >> >>> Daniel, >>> >>> I did a little measurement of Lift and did some tuning. On my Core 920 >>> machine with 12GB of RAM running Ubuntu 9.04 and the JDK 1.6.0_13 in 64 bit >>> mode with Tomcat 6.0.18 (I ran into some bugs in Jetty while measuring with >>> ab). My baseline running (both locally and across the network) >>> >>> ab -c 10 -n 20000 http://yak.local:8080/user_mgt/login >>> >>> I was seeing about 1,500 pages/second. I used YourKit to do some >>> profiling and improved performance on my box to about 2,200 pages/second. >>> Here are the steps I went through. I created a new project: >>> >>> d...@yak:~/benchmark$ mvn archetype:create -U >>> -DarchetypeGroupId=net.liftweb -DarchetypeArtifactId=lift-archetype-basic >>> -DarchetypeVersion=1.1-SNAPSHOT -DremoteRepositories= >>> http://scala-tools.org/repo-snapshots -DgroupId=com.liftcode >>> -DartifactId=benchmark >>> >>> I cd'ed into benchmark and typed "mvn clean install" I copied the >>> "target/benchmark-1.0-SNAPSHOT" directory into Tomcat's webapps directory >>> and renamed the directory "ROOT". I did export >>> JAVA_OPTS="-Drun.mode=production" to make sure Lift runs in production >>> mode. I started Tomcat with ./bin/startup.sh >>> >>> Then I ran: >>> >>> d...@yak:~/tmp$ ab -c 10 -n 20000 http://localhost:8080/user_mgt/login >>> >>> I did this and discarded the results because this will "warm up" the >>> HotSpot compiler. At the end of this run, the JVM should have optimized >>> most of the Lift-related classes. Next, I re-ran the command: >>> d...@yak:~/tmp$ ab -c 10 -n 20000 http://localhost:8080/user_mgt/login >>> 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 localhost (be patient) >>> Completed 2000 requests >>> Completed 4000 requests >>> Completed 6000 requests >>> Completed 8000 requests >>> Completed 10000 requests >>> Completed 12000 requests >>> Completed 14000 requests >>> Completed 16000 requests >>> Completed 18000 requests >>> Completed 20000 requests >>> Finished 20000 requests >>> >>> >>> Server Software: Apache-Coyote/1.1 >>> Server Hostname: localhost >>> Server Port: 8080 >>> >>> Document Path: /user_mgt/login >>> Document Length: 3768 bytes >>> >>> Concurrency Level: 10 >>> Time taken for tests: 9.156 seconds >>> Complete requests: 20000 >>> Failed requests: 0 >>> Write errors: 0 >>> Total transferred: 83620000 bytes >>> HTML transferred: 75360000 bytes >>> Requests per second: 2184.33 [#/sec] (mean) >>> Time per request: 4.578 [ms] (mean) >>> Time per request: 0.458 [ms] (mean, across all concurrent requests) >>> Transfer rate: 8918.62 [Kbytes/sec] received >>> >>> Connection Times (ms) >>> min mean[+/-sd] median max >>> Connect: 0 1 0.9 0 8 >>> Processing: 1 4 18.5 3 788 >>> Waiting: 0 4 18.4 2 788 >>> Total: 1 5 18.5 3 788 >>> WARNING: The median and mean for the initial connection time are not >>> within a normal deviation >>> These results are probably not that reliable. >>> >>> Percentage of the requests served within a certain time (ms) >>> 50% 3 >>> 66% 4 >>> 75% 4 >>> 80% 5 >>> 90% 6 >>> 95% 8 >>> 98% 11 >>> 99% 16 >>> 100% 788 (longest request) >>> d...@yak:~/tmp$ >>> >>> I also ran the command remotely over a gigabit LAN: >>> d...@horse:~$ ab -c 10 -n 20000 http://yak.local:8080/user_mgt/login >>> This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 >>> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ >>> Copyright 2006 The Apache Software Foundation, http://www.apache.org/ >>> >>> Benchmarking yak.local (be patient) >>> Completed 2000 requests >>> Completed 4000 requests >>> Completed 6000 requests >>> Completed 8000 requests >>> Completed 10000 requests >>> Completed 12000 requests >>> Completed 14000 requests >>> Completed 16000 requests >>> Completed 18000 requests >>> Finished 20000 requests >>> >>> >>> Server Software: Apache-Coyote/1.1 >>> Server Hostname: yak.local >>> Server Port: 8080 >>> >>> Document Path: /user_mgt/login >>> Document Length: 3768 bytes >>> >>> Concurrency Level: 10 >>> Time taken for tests: 10.305721 seconds >>> Complete requests: 20000 >>> Failed requests: 0 >>> Write errors: 0 >>> Total transferred: 83620000 bytes >>> HTML transferred: 75360000 bytes >>> Requests per second: 1940.67 [#/sec] (mean) >>> Time per request: 5.153 [ms] (mean) >>> Time per request: 0.515 [ms] (mean, across all concurrent requests) >>> Transfer rate: 7923.75 [Kbytes/sec] received >>> >>> Connection Times (ms) >>> min mean[+/-sd] median max >>> Connect: 0 0 0.6 0 4 >>> Processing: 1 4 25.9 3 840 >>> Waiting: 1 3 25.6 2 816 >>> Total: 1 4 25.9 3 840 >>> >>> Percentage of the requests served within a certain time (ms) >>> 50% 3 >>> 66% 4 >>> 75% 4 >>> 80% 4 >>> 90% 6 >>> 95% 8 >>> 98% 11 >>> 99% 17 >>> 100% 840 (longest request) >>> >>> >>> I'm currently setting up a test machine with a 2 core AMD processor, 1GB >>> of RAM and Ubuntu. I'll re-run the tests on this box and let you know. >>> >>> Thanks, >>> >>> David >>> >>> >>> >>> >>> >>> >>> On Sat, May 2, 2009 at 1:32 PM, Dunsun <dun...@gmail.com> wrote: >>> >>>> >>>> Hi, >>>> >>>> I'm very new to lift and scala. >>>> >>>> I have made some Grails intranet applications but sadly Grails or >>>> better say GSP rendering part which is completely written in Groovy is >>>> a very slow beast (even in comparison with Rails or Django). >>>> >>>> For my future big project (heavy loaded site) I need something much >>>> faster. >>>> >>>> So I have made some quick and dirty Lift benchmarks using ApacheBench >>>> + Tomcat, GlassFish (from netbeans) and even Jetty. >>>> My machine - AMD X2 @ 2500Mhz, 4 GB RAM >>>> >>>> LIFT BASIC SAMPLE: >>>> ab -c 10 -n 3000 >>>> http://localhost:8080/liftbasic-1.0-SNAPSHOT/user_mgt/login >>>> 50 req/s >>>> >>>> LIFT BLANK SAMPLE: >>>> ab -c 10 -n 3000 http://localhost:8080/liftblank-1.0/ >>>> 120 req/s >>>> >>>> Obtained numbers were similar for all 3 servers. >>>> >>>> Using Stripes and rendering similar simple pages I'm getting much much >>>> higher scores (600 req/s). >>>> Using Grails I'm getting little worse results but I would say it is >>>> same league. >>>> I would expect much better performance from Lift which is written in >>>> scala. >>>> >>>> Why am I getting these low numbers ? >>>> Am I doing something wrong ? >>>> Any suggestion is very welcome. >>>> >>>> regards >>>> Daniel >>>> >>>> >>>> >>> >>> >>> -- >>> Lift, the simply functional web framework http://liftweb.net >>> Beginning Scala http://www.apress.com/book/view/1430219890 >>> Follow me: http://twitter.com/dpp >>> Git some: http://github.com/dpp >>> >>> >>> >> >> >> > > > -- > Lift, the simply functional web framework http://liftweb.net > Beginning Scala http://www.apress.com/book/view/1430219890 > Follow me: http://twitter.com/dpp > Git some: http://github.com/dpp > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---