Objective

Stress test of GT3 security on a production machine.

The previous tests where done on a relatively slow machine. We will repeat them to estimate the load a production machine will be able to handle.

Configuration

Tests run on 4 Xeon 3GHz, JDK 1.4.2, Tomcat 5.0.25 Client and server running on the same machine. The server is a normal Tomcat 5 server with GT3 services deployed on top. The service we are testing is GUMS implemented, with a custom interface, no SAML messaging. GUMS will use a mysql server on the backhand, installed on the same machine. The load of the mysql server was 2 order of magnitude lower than the GT3 server and clients, and is therefore disregarded.

Results

We have run the tests incrementally, first with a single client, then with 2 clients, 3, ... The key results where:

Number of clientsCPU idleDelayThroughput
1 client280%35 ms/req28 req/sec
2 clients205%48 ms/req42.5 req/sec
3 clients120%62 ms/req48 req/sec
4 clients85%80 ms/req50 req/sec
5 clients75%102 ms/req49 req/sec
6 clients65%121 ms/req49.5 req/sec

The first execution times around 2.5 sec.

Conclusion

The delay with one clients drops from 171 ms/req to 35 ms/req. The throughput under stress goes from 10 to 50. The first execution drops from 11.9 sec to 2.5 sec. The system is not CPU bound anymore, in fact it was impossible to saturate the CPU. If more clients were added, the throughput remains the same while the delay increases.

I have also tried running two instances of Tomcat on the same machine, but the total throughput and delays have remained the same.

Data

Here is the raw data:

1 client (280% idle cpu) 28 req/sec
Time from 1 to 100: 5519ms 55.0ms/request
Time from 101 to 200: 4367ms 43.0ms/request
Time from 201 to 300: 4279ms 42.0ms/request
Time from 301 to 400: 4144ms 41.0ms/request
Time from 401 to 500: 4222ms 42.0ms/request
Time from 501 to 600: 3979ms 39.0ms/request
Time from 601 to 700: 3916ms 39.0ms/request
Time from 701 to 800: 3988ms 39.0ms/request
Time from 801 to 900: 3851ms 38.0ms/request
Time from 901 to 1000: 3770ms 37.0ms/request
Time from 1001 to 1100: 3720ms 37.0ms/request
Time from 1101 to 1200: 3825ms 38.0ms/request
Time from 1201 to 1300: 3615ms 36.0ms/request
Time from 1301 to 1400: 3623ms 36.0ms/request
Time from 1401 to 1500: 3633ms 36.0ms/request
Time from 1501 to 1600: 3836ms 38.0ms/request
Time from 1601 to 1700: 3597ms 35.0ms/request
Time from 1701 to 1800: 3595ms 35.0ms/request
Time from 1801 to 1900: 3589ms 35.0ms/request
Time from 1901 to 2000: 3777ms 37.0ms/request
Time from 2001 to 2100: 3598ms 35.0ms/request
Time from 2101 to 2200: 3596ms 35.0ms/request
Time from 2201 to 2300: 3607ms 36.0ms/request
Time from 2301 to 2400: 3880ms 38.0ms/request
Time from 2401 to 2500: 3599ms 35.0ms/request
Time from 2501 to 2600: 3636ms 36.0ms/request
Time from 2601 to 2700: 3918ms 39.0ms/request
Time from 2701 to 2800: 3723ms 37.0ms/request
Time from 2801 to 2900: 3709ms 37.0ms/request
Time from 2901 to 3000: 3687ms 36.0ms/request
Time from 3001 to 3100: 3893ms 38.0ms/request
Time from 3101 to 3200: 3685ms 36.0ms/request
Time from 3201 to 3300: 3629ms 36.0ms/request
Time from 3301 to 3400: 3563ms 35.0ms/request
Time from 3401 to 3500: 3733ms 37.0ms/request
Time from 3501 to 3600: 3516ms 35.0ms/request
Time from 3601 to 3700: 3519ms 35.0ms/request
Time from 3701 to 3800: 3516ms 35.0ms/request
Time from 3801 to 3900: 3710ms 37.0ms/request
Time from 3901 to 4000: 3617ms 36.0ms/request
Time from 4001 to 4100: 3530ms 35.0ms/request
Time from 4101 to 4200: 3528ms 35.0ms/request
Time from 4201 to 4300: 3720ms 37.0ms/request
Time from 4301 to 4400: 3527ms 35.0ms/request
Time from 4401 to 4500: 3527ms 35.0ms/request
Time from 4501 to 4600: 3529ms 35.0ms/request

2 clients (205% idle cpu) 42.5 req/sec
Time from 1 to 100: 5705ms 57.0ms/request
Time from 101 to 200: 5225ms 52.0ms/request
Time from 201 to 300: 5072ms 50.0ms/request
Time from 301 to 400: 5013ms 50.0ms/request
Time from 401 to 500: 5036ms 50.0ms/request
Time from 501 to 600: 4934ms 49.0ms/request
Time from 601 to 700: 4938ms 49.0ms/request
Time from 701 to 800: 4990ms 49.0ms/request
Time from 801 to 900: 4824ms 48.0ms/request
Time from 901 to 1000: 5022ms 50.0ms/request
Time from 1001 to 1100: 4918ms 49.0ms/request
Time from 1101 to 1200: 4775ms 47.0ms/request
Time from 1201 to 1300: 4758ms 47.0ms/request
Time from 1301 to 1400: 4782ms 47.0ms/request
Time from 1401 to 1500: 4924ms 49.0ms/request
Time from 1501 to 1600: 4694ms 46.0ms/request
Time from 1601 to 1700: 4723ms 47.0ms/request
Time from 1701 to 1800: 5051ms 50.0ms/request
Time from 1801 to 1900: 4823ms 48.0ms/request
Time from 1901 to 2000: 4780ms 47.0ms/request
Time from 2001 to 2100: 4752ms 47.0ms/request
Time from 2101 to 2200: 4994ms 49.0ms/request
Time from 2201 to 2300: 4802ms 48.0ms/request
Time from 2301 to 2400: 5189ms 51.0ms/request
Time from 2401 to 2500: 4711ms 47.0ms/request
Time from 2501 to 2600: 5059ms 50.0ms/request
Time from 2601 to 2700: 4767ms 47.0ms/request
Time from 2701 to 2800: 4956ms 49.0ms/request
Time from 2801 to 2900: 5048ms 50.0ms/request
Time from 2901 to 3000: 4887ms 48.0ms/request
Time from 3001 to 3100: 4920ms 49.0ms/request
Time from 3101 to 3200: 4769ms 47.0ms/request

3 clients (120% idle cpu) 48 req/sec
Time from 1 to 100: 7382ms 73.0ms/request
Time from 101 to 200: 6979ms 69.0ms/request
Time from 201 to 300: 6564ms 65.0ms/request
Time from 301 to 400: 6678ms 66.0ms/request
Time from 401 to 500: 6444ms 64.0ms/request
Time from 501 to 600: 6716ms 67.0ms/request
Time from 601 to 700: 6698ms 66.0ms/request
Time from 701 to 800: 6187ms 61.0ms/request
Time from 801 to 900: 6344ms 63.0ms/request
Time from 901 to 1000: 6194ms 61.0ms/request
Time from 1001 to 1100: 6572ms 65.0ms/request
Time from 1101 to 1200: 6439ms 64.0ms/request
Time from 1201 to 1300: 6253ms 62.0ms/request
Time from 1301 to 1400: 6246ms 62.0ms/request
Time from 1401 to 1500: 6204ms 62.0ms/request
Time from 1501 to 1600: 6501ms 65.0ms/request
Time from 1601 to 1700: 6407ms 64.0ms/request
Time from 1701 to 1800: 6275ms 62.0ms/request
Time from 1801 to 1900: 6408ms 64.0ms/request
Time from 1901 to 2000: 6441ms 64.0ms/request
Time from 2001 to 2100: 6474ms 64.0ms/request
Time from 2101 to 2200: 6412ms 64.0ms/request
Time from 2201 to 2300: 6245ms 62.0ms/request
Time from 2301 to 2400: 6429ms 64.0ms/request
Time from 2401 to 2500: 6456ms 64.0ms/request
Time from 2501 to 2600: 6404ms 64.0ms/request
Time from 2601 to 2700: 6418ms 64.0ms/request
Time from 2701 to 2800: 6070ms 60.0ms/request
Time from 2801 to 2900: 6154ms 61.0ms/request
Time from 2901 to 3000: 6214ms 62.0ms/request
Time from 3001 to 3100: 6329ms 63.0ms/request
Time from 3101 to 3200: 6277ms 62.0ms/request
Time from 3201 to 3300: 6085ms 60.0ms/request
Time from 3301 to 3400: 6292ms 62.0ms/request
Time from 3401 to 3500: 6304ms 63.0ms/request
Time from 3501 to 3600: 6279ms 62.0ms/request
Time from 3601 to 3700: 6110ms 61.0ms/request

4 clients (85% idle CPU) 50 req/sec
Time from 1 to 100: 9708ms 97.0ms/request
Time from 101 to 200: 8894ms 88.0ms/request
Time from 201 to 300: 8874ms 88.0ms/request
Time from 301 to 400: 8635ms 86.0ms/request
Time from 401 to 500: 8840ms 88.0ms/request
Time from 501 to 600: 8750ms 87.0ms/request
Time from 601 to 700: 8833ms 88.0ms/request
Time from 701 to 800: 8578ms 85.0ms/request
Time from 801 to 900: 8321ms 83.0ms/request
Time from 901 to 1000: 8404ms 84.0ms/request
Time from 1001 to 1100: 8090ms 80.0ms/request
Time from 1101 to 1200: 8715ms 87.0ms/request
Time from 1201 to 1300: 8257ms 82.0ms/request
Time from 1301 to 1400: 8183ms 81.0ms/request
Time from 1401 to 1500: 8091ms 80.0ms/request
Time from 1501 to 1600: 8399ms 83.0ms/request
Time from 1601 to 1700: 8410ms 84.0ms/request
Time from 1701 to 1800: 7961ms 79.0ms/request
Time from 1801 to 1900: 8118ms 81.0ms/request
Time from 1901 to 2000: 8078ms 80.0ms/request
Time from 2001 to 2100: 8043ms 80.0ms/request
Time from 2101 to 2200: 8138ms 81.0ms/request
Time from 2201 to 2300: 8170ms 81.0ms/request
Time from 2301 to 2400: 8189ms 81.0ms/request
Time from 2401 to 2500: 8135ms 81.0ms/request
Time from 2501 to 2600: 8299ms 82.0ms/request
Time from 2601 to 2700: 8217ms 82.0ms/request
Time from 2701 to 2800: 8266ms 82.0ms/request
Time from 2801 to 2900: 7866ms 78.0ms/request
Time from 2901 to 3000: 8138ms 81.0ms/request
Time from 3001 to 3100: 7953ms 79.0ms/request
Time from 3101 to 3200: 8067ms 80.0ms/request
Time from 3201 to 3300: 8147ms 81.0ms/request
Time from 3301 to 3400: 7945ms 79.0ms/request
Time from 3401 to 3500: 8091ms 80.0ms/request
Time from 3501 to 3600: 8064ms 80.0ms/request
Time from 3601 to 3700: 8016ms 80.0ms/request
Time from 3701 to 3800: 8334ms 83.0ms/request
Time from 3801 to 3900: 8088ms 80.0ms/request
Time from 3901 to 4000: 8104ms 81.0ms/request
Time from 4001 to 4100: 7922ms 79.0ms/request
Time from 4101 to 4200: 8136ms 81.0ms/request
Time from 4201 to 4300: 8366ms 83.0ms/request
Time from 4301 to 4400: 7997ms 79.0ms/request
Time from 4401 to 4500: 8148ms 81.0ms/request
Time from 4501 to 4600: 7974ms 79.0ms/request
Time from 4601 to 4700: 8143ms 81.0ms/request
Time from 4701 to 4800: 8109ms 81.0ms/request
Time from 4801 to 4900: 8109ms 81.0ms/request
Time from 4901 to 5000: 7986ms 79.0ms/request
Time from 5001 to 5100: 8097ms 80.0ms/request
Time from 5101 to 5200: 8117ms 81.0ms/request
Time from 5201 to 5300: 7938ms 79.0ms/request
Time from 5301 to 5400: 8103ms 81.0ms/request
Time from 5401 to 5500: 7939ms 79.0ms/request
Time from 5501 to 5600: 8091ms 80.0ms/request
Time from 5601 to 5700: 8185ms 81.0ms/request
Time from 5701 to 5800: 8080ms 80.0ms/request
Time from 5801 to 5900: 8044ms 80.0ms/request
Time from 5901 to 6000: 8188ms 81.0ms/request
Time from 6001 to 6100: 7921ms 79.0ms/request
Time from 6101 to 6200: 7933ms 79.0ms/request

5 clients (75% idle CPU) 49 req/sec
Time from 1 to 100: 12309ms 123.0ms/request
Time from 101 to 200: 10877ms 108.0ms/request
Time from 201 to 300: 10552ms 105.0ms/request
Time from 301 to 400: 11970ms 119.0ms/request
Time from 401 to 500: 12175ms 121.0ms/request
Time from 501 to 600: 11249ms 112.0ms/request
Time from 601 to 700: 10868ms 108.0ms/request
Time from 701 to 800: 10464ms 104.0ms/request
Time from 801 to 900: 10920ms 109.0ms/request
Time from 901 to 1000: 10182ms 101.0ms/request
Time from 1001 to 1100: 11123ms 111.0ms/request
Time from 1101 to 1200: 10213ms 102.0ms/request
Time from 1201 to 1300: 10611ms 106.0ms/request
Time from 1301 to 1400: 10009ms 100.0ms/request
Time from 1401 to 1500: 9911ms 99.0ms/request
Time from 1501 to 1600: 10487ms 104.0ms/request
Time from 1601 to 1700: 9913ms 99.0ms/request
Time from 1701 to 1800: 10313ms 103.0ms/request
Time from 1801 to 1900: 9932ms 99.0ms/request
Time from 1901 to 2000: 10627ms 106.0ms/request
Time from 2001 to 2100: 9900ms 99.0ms/request
Time from 2101 to 2200: 10270ms 102.0ms/request
Time from 2201 to 2300: 10184ms 101.0ms/request
Time from 2301 to 2400: 10417ms 104.0ms/request
Time from 2401 to 2500: 10116ms 101.0ms/request
Time from 2501 to 2600: 10327ms 103.0ms/request
Time from 2601 to 2700: 10135ms 101.0ms/request
Time from 2701 to 2800: 10353ms 103.0ms/request
Time from 2801 to 2900: 9980ms 99.0ms/request
Time from 2901 to 3000: 10667ms 106.0ms/request
Time from 3001 to 3100: 10085ms 100.0ms/request
Time from 3101 to 3200: 10336ms 103.0ms/request
Time from 3201 to 3300: 10460ms 104.0ms/request
Time from 3301 to 3400: 10072ms 100.0ms/request
Time from 3401 to 3500: 10226ms 102.0ms/request
Time from 3501 to 3600: 9799ms 97.0ms/request
Time from 3601 to 3700: 10080ms 100.0ms/request
Time from 3701 to 3800: 9840ms 98.0ms/request
Time from 3801 to 3900: 10551ms 105.0ms/request
Time from 3901 to 4000: 10276ms 102.0ms/request
Time from 4001 to 4100: 10649ms 106.0ms/request
Time from 4101 to 4200: 10278ms 102.0ms/request
Time from 4201 to 4300: 10055ms 100.0ms/request
Time from 4301 to 4400: 10279ms 102.0ms/request
Time from 4401 to 4500: 10246ms 102.0ms/request
Time from 4501 to 4600: 10054ms 100.0ms/request
Time from 4601 to 4700: 10405ms 104.0ms/request
Time from 4701 to 4800: 10559ms 105.0ms/request
Time from 4801 to 4900: 10690ms 106.0ms/request
Time from 4901 to 5000: 9885ms 98.0ms/request
Time from 5001 to 5100: 10800ms 108.0ms/request
Time from 5101 to 5200: 9914ms 99.0ms/request
Time from 5201 to 5300: 10010ms 100.0ms/request
Time from 5301 to 5400: 10134ms 101.0ms/request
Time from 5401 to 5500: 10117ms 101.0ms/request
Time from 5501 to 5600: 10347ms 103.0ms/request
Time from 5601 to 5700: 10169ms 101.0ms/request
Time from 5701 to 5800: 10432ms 104.0ms/request
Time from 5801 to 5900: 10466ms 104.0ms/request
Time from 5901 to 6000: 10395ms 103.0ms/request
Time from 6001 to 6100: 10337ms 103.0ms/request
Time from 6101 to 6200: 9865ms 98.0ms/request
Time from 6201 to 6300: 10049ms 100.0ms/request
Time from 6301 to 6400: 10310ms 103.0ms/request
Time from 6401 to 6500: 9990ms 99.0ms/request
Time from 6501 to 6600: 10587ms 105.0ms/request
Time from 6601 to 6700: 9819ms 98.0ms/request
Time from 6701 to 6800: 10033ms 100.0ms/request
Time from 6801 to 6900: 10172ms 101.0ms/request
Time from 6901 to 7000: 10703ms 107.0ms/request
Time from 7001 to 7100: 10344ms 103.0ms/request
Time from 7101 to 7200: 10710ms 107.0ms/request
Time from 7201 to 7300: 10623ms 106.0ms/request
Time from 7301 to 7400: 10243ms 102.0ms/request
Time from 7401 to 7500: 10416ms 104.0ms/request
Time from 7501 to 7600: 10283ms 102.0ms/request
Time from 7601 to 7700: 10123ms 101.0ms/request
Time from 7701 to 7800: 10363ms 103.0ms/request
Time from 7801 to 7900: 9952ms 99.0ms/request
Time from 7901 to 8000: 10504ms 105.0ms/request
Time from 8001 to 8100: 9499ms 94.0ms/request
Time from 8101 to 8200: 10714ms 107.0ms/request
Time from 8201 to 8300: 9756ms 97.0ms/request
Time from 8301 to 8400: 10345ms 103.0ms/request
Time from 8401 to 8500: 10456ms 104.0ms/request
Time from 8501 to 8600: 9859ms 98.0ms/request
Time from 8601 to 8700: 10439ms 104.0ms/request
Time from 8701 to 8800: 9660ms 96.0ms/request
Time from 8801 to 8900: 10407ms 104.0ms/request

6 clients (65% idle CPU) 49.5 req/sec
Time from 1 to 100: 14474ms 144.0ms/request
Time from 101 to 200: 14646ms 146.0ms/request
Time from 201 to 300: 16464ms 164.0ms/request
Time from 301 to 400: 17205ms 172.0ms/request
Time from 401 to 500: 13681ms 136.0ms/request
Time from 501 to 600: 13099ms 130.0ms/request
Time from 601 to 700: 13008ms 130.0ms/request
Time from 701 to 800: 12490ms 124.0ms/request
Time from 801 to 900: 13155ms 131.0ms/request
Time from 901 to 1000: 12556ms 125.0ms/request
Time from 1001 to 1100: 12713ms 127.0ms/request
Time from 1101 to 1200: 12418ms 124.0ms/request
Time from 1201 to 1300: 12554ms 125.0ms/request
Time from 1301 to 1400: 11472ms 114.0ms/request
Time from 1401 to 1500: 12756ms 127.0ms/request
Time from 1501 to 1600: 11547ms 115.0ms/request
Time from 1601 to 1700: 12049ms 120.0ms/request
Time from 1701 to 1800: 12273ms 122.0ms/request
Time from 1801 to 1900: 11942ms 119.0ms/request
Time from 1901 to 2000: 12109ms 121.0ms/request
Time from 2001 to 2100: 12307ms 123.0ms/request
Time from 2101 to 2200: 11541ms 115.0ms/request
Time from 2201 to 2300: 11324ms 113.0ms/request
Time from 2301 to 2400: 11862ms 118.0ms/request
Time from 2401 to 2500: 12770ms 127.0ms/request
Time from 2501 to 2600: 12417ms 124.0ms/request
Time from 2601 to 2700: 12628ms 126.0ms/request
Time from 2701 to 2800: 11882ms 118.0ms/request
Time from 2801 to 2900: 12838ms 128.0ms/request
Time from 2901 to 3000: 12237ms 122.0ms/request
Time from 3001 to 3100: 12384ms 123.0ms/request
Time from 3101 to 3200: 12271ms 122.0ms/request
Time from 3201 to 3300: 12020ms 120.0ms/request
Time from 3301 to 3400: 11698ms 116.0ms/request
Time from 3401 to 3500: 12333ms 123.0ms/request
Time from 3501 to 3600: 11904ms 119.0ms/request
Time from 3601 to 3700: 11954ms 119.0ms/request
Time from 3701 to 3800: 12285ms 122.0ms/request