-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 All,
Last week, I decided to actually run my own performance measurements. Before I waste a lot of time benchmarking, I wanted to vet my methodology so I get all the data worth taking. I'm using ApacheBench 2.3 (ships with httpd 2.2.10) as my benchmarking tool, all running on localhost to avoid anything on my local network interfering with the tests. I've also blocked all incoming traffic to the web server using iptables. This machine provides no other services (except ssh) and is only used by me, so that should be sufficient. I have 15 static files of sizes 4, 8, 16, 32, 64, 128, and 512 kilobytes, 1, 2, 4, 8, 16, and 32 megabytes. I'm requesting each of them 100,000 times with a concurrency of 1 (single thread makes 100,000 requests). I'm using the "Transfer rate" (in KiB/sec) as the sample for each. I have not enabled keepalives, but may for a second set of data. I will be comparing an out-of-the-box prefork MPM httpd 2.2.10 configuration against an out-of-the-box Tomcat 5.5.26 Coyote, APR, and APR without sendfile configurations (I didn't realize until after I started my Coyote tests that NIO is only available in TC6.0, so I'll be doing my NIO tests on 6.0). I have a set of numbers for httpd and Coyote already (see below). I have a few questions for those who wish to comment: 1. Is the number of requests (100,0000 sufficient? It seems to take forever on this machine... my Coyote tests took longer than overnight. 2. Is a concurrency of 1 okay? I thought about it and testing the ability of the OS to schedule processes and threads doesn't seem like it adds anything to the data. 3. Is it worth testing without sendfile enabled on those connectors that support it? I can reduce the time to generate all the data by skipping 3 of the tests. 4. Is transfer rate the best data to use? I suppose that depends on what I want to demonstrate. Since we get questions on this list like "which is faster for static content?" I figured that one of two things would be appropriate: the transfer rate or the number of requests per second. These numbers are directly related, and it's easier to graph numbers that are in the same range (you can serve a 4KiB file much faster than a 32MiB file), so I chose the former. Below is the data I've collected so far. I'll publish everything on my blog, including graphs, etc. once it's finished. (Strange that httpd dramatically increased its transfer rate when requesting the 16MiB file!) - -chris 100000 Requests localhost keepalive=off Concurrency=1 Transfer Rate (KiB/sec) File Size Apache httpd TC5.5 Coyote 4kiB 6215.20 5467.43 8kiB 11630.17 9732.60 16kiB 21271.92 16266.66 32kiB 38257.77 27530.75 64kiB 63729.12 41946.45 128kiB 91768.23 56000.19 256kiB 126919.12 72062.84 512kiB 160506.81 66654.86 1MiB 180850.63 72533.92 2MiB 185157.29 75957.71 4MiB 185262.91 77969.20 8MiB 185152.66 79075.54 16MiB 256399.66 80364.26 32MiB 189933.50 80243.41 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkoRbeIACgkQ9CaO5/Lv0PAewQCbB7L0jaCWSD6EAcECKIRW/Uy2 AAUAoKpR/2MweDPcnmv3+a+EQd6n55+i =Jd6Q -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org