| | 126 | <p>Benchmark of Cherokee 0.5.4 under Windows, contributed to the main mailing list. Here is the link to the <a href="http://www.cherokee-project.com/pipermail/cherokee/2008-May/002757.html">non abridged post</a>.</p> |
|---|
| | 127 | |
|---|
| | 128 | <p>Cherokee had one million static requests and one million scgi dynamic requests with two <b>ab</b> commands started at about the same time. More info follows:</p> |
|---|
| | 129 | <hr> |
|---|
| | 130 | <pre> |
|---|
| | 131 | The scgi performance was quite impressive. I'm not sure about the |
|---|
| | 132 | details of Cherokee's scgi and fcgi implementation. In my testing, a |
|---|
| | 133 | multi-threaded scgi back-end written in Python was much faster |
|---|
| | 134 | handling concurrent requests than a single-threaded fcgi backend |
|---|
| | 135 | written in a compiled language, when the number of concurrent requests |
|---|
| | 136 | was more than 5. But dealing with continuous but non-concurrent |
|---|
| | 137 | requests, the natively compiled fastcgi takes about 40% of the time of |
|---|
| | 138 | what it takes the scgi Python app to handle a request. This tells me |
|---|
| | 139 | that the Python scgi backend (web.py) is able to cope with pretty |
|---|
| | 140 | heavy traffic, which will be a bit less than half of the ultimate |
|---|
| | 141 | capacity that could be achieved by running a server pool of |
|---|
| | 142 | fastcgi/scgi written in a compiled language. (I'm assuming the |
|---|
| | 143 | overhead of fcgi and scgi are similar, or the difference ignorable.) |
|---|
| | 144 | |
|---|
| | 145 | The test is done on a single-CPU vmware guest OS running on a powerful |
|---|
| | 146 | core 2 dual host. It was taking most CPU time of a core during the |
|---|
| | 147 | test. No other vms or heavy tasks were run during the tests. |
|---|
| | 148 | |
|---|
| | 149 | C:\Internet>ab -n 1000000 -c 1 http://localhost/image/google.html |
|---|
| | 150 | |
|---|
| | 151 | Server Software: Cherokee/0.5.4 |
|---|
| | 152 | Server Hostname: localhost |
|---|
| | 153 | Server Port: 80 |
|---|
| | 154 | |
|---|
| | 155 | Document Path: /image/static.html |
|---|
| | 156 | Document Length: 67859 bytes |
|---|
| | 157 | |
|---|
| | 158 | Concurrency Level: 1 |
|---|
| | 159 | Time taken for tests: 6012.703125 seconds |
|---|
| | 160 | Complete requests: 1000000 |
|---|
| | 161 | Failed requests: 5 |
|---|
| | 162 | (Connect: 5, Length: 0, Exceptions: 0) |
|---|
| | 163 | Write errors: 0 |
|---|
| | 164 | Total transferred: -681476736 bytes |
|---|
| | 165 | HTML transferred: -860476736 bytes |
|---|
| | 166 | Requests per second: 166.31 [#/sec] (mean) |
|---|
| | 167 | Time per request: 6.013 [ms] (mean) |
|---|
| | 168 | Time per request: 6.013 [ms] (mean, across all concurrent requests) |
|---|
| | 169 | Transfer rate: -110.68 [Kbytes/sec] received |
|---|
| | 170 | |
|---|
| | 171 | Connection Times (ms) |
|---|
| | 172 | min mean[+/-sd] median max |
|---|
| | 173 | Connect: 0 1 12.0 0 3015 |
|---|
| | 174 | Processing: 0 2 6.1 0 203 |
|---|
| | 175 | Waiting: 0 0 3.0 0 156 |
|---|
| | 176 | Total: 0 4 13.2 0 3046 |
|---|
| | 177 | |
|---|
| | 178 | Percentage of the requests served within a certain time (ms) |
|---|
| | 179 | 50% 0 |
|---|
| | 180 | 66% 0 |
|---|
| | 181 | 75% 15 |
|---|
| | 182 | 80% 15 |
|---|
| | 183 | 90% 15 |
|---|
| | 184 | 95% 15 |
|---|
| | 185 | 98% 15 |
|---|
| | 186 | 99% 15 |
|---|
| | 187 | 100% 3046 (longest request) |
|---|
| | 188 | |
|---|
| | 189 | |
|---|
| | 190 | |
|---|
| | 191 | |
|---|
| | 192 | C:\Internet>ab -n 1000000 -c 1 http://localhost/s/scgi/ |
|---|
| | 193 | |
|---|
| | 194 | Benchmarking localhost (be patient) |
|---|
| | 195 | Completed 100000 requests |
|---|
| | 196 | Completed 200000 requests |
|---|
| | 197 | Completed 300000 requests |
|---|
| | 198 | Completed 400000 requests |
|---|
| | 199 | Completed 500000 requests |
|---|
| | 200 | Completed 600000 requests |
|---|
| | 201 | Completed 700000 requests |
|---|
| | 202 | Completed 800000 requests |
|---|
| | 203 | Completed 900000 requests |
|---|
| | 204 | Finished 1000000 requests |
|---|
| | 205 | |
|---|
| | 206 | |
|---|
| | 207 | Server Software: Cherokee/0.5.4 |
|---|
| | 208 | Server Hostname: localhost |
|---|
| | 209 | Server Port: 80 |
|---|
| | 210 | |
|---|
| | 211 | Document Path: /s/scgi/ |
|---|
| | 212 | Document Length: 693 bytes |
|---|
| | 213 | |
|---|
| | 214 | Concurrency Level: 1 |
|---|
| | 215 | Time taken for tests: 8875.62500 seconds |
|---|
| | 216 | Complete requests: 1000000 |
|---|
| | 217 | Failed requests: 5 |
|---|
| | 218 | (Connect: 5, Length: 0, Exceptions: 0) |
|---|
| | 219 | Write errors: 0 |
|---|
| | 220 | Total transferred: 803000000 bytes |
|---|
| | 221 | HTML transferred: 693000000 bytes |
|---|
| | 222 | Requests per second: 112.68 [#/sec] (mean) |
|---|
| | 223 | Time per request: 8.875 [ms] (mean) |
|---|
| | 224 | Time per request: 8.875 [ms] (mean, across all concurrent requests) |
|---|
| | 225 | Transfer rate: 88.36 [Kbytes/sec] received |
|---|
| | 226 | |
|---|
| | 227 | Connection Times (ms) |
|---|
| | 228 | min mean[+/-sd] median max |
|---|
| | 229 | Connect: 0 0 6.9 0 2984 |
|---|
| | 230 | Processing: 0 8 8.1 15 281 |
|---|
| | 231 | Waiting: 0 7 8.0 0 281 |
|---|
| | 232 | Total: 0 8 10.5 15 3031 |
|---|
| | 233 | |
|---|
| | 234 | Percentage of the requests served within a certain time (ms) |
|---|
| | 235 | 50% 15 |
|---|
| | 236 | 66% 15 |
|---|
| | 237 | 75% 15 |
|---|
| | 238 | 80% 15 |
|---|
| | 239 | 90% 15 |
|---|
| | 240 | 95% 15 |
|---|
| | 241 | 98% 15 |
|---|
| | 242 | 99% 31 |
|---|
| | 243 | 100% 3031 (longest request) |
|---|
| | 244 | </pre> |
|---|
| | 245 | |
|---|
| | 246 | |
|---|
| | 247 | <h2>Links to other benchmarks</h2> |
|---|