Hi All
I've just spent one heck of a long day measuring the performance of 4
web server platforms and reached some interesting conclusions (well,
interesting for me anyway. I'm sure I'm treading over well trodden
ground for many, but at least I've been able to quantify some of it
which may be of interest).
The socket error is a #10061, "could not make a connection because
the target machine actively refused it".
The tests I did focused on the relative proportions of the 2 types of
errors which get returned when the web server starts to saturate:
a) 403's (or 403.9 on IIS) http error (which results in a managed,
trappable error sent back ot the browser)
. . . then as loading increases . . . .
b) socket errors (which are ugly at the browser and can't be trapped
by the web server)
It appears that 4D Web server on Windows (any flavour) has an
extremely small zone between the 'no error' and the 'socket error'
stage. This was because I couldn't tune the serving capacity (min web
processes = 10) down far enough for 4D to start rejecting requests
gracefully, so it appears to plough straight from the 'error free'
zone into the 'socket error' zone without spending much time in the
'403' zone. IIS on the other hand is still returning http errors when
4D (Windows) is well into the 'Socket' zone. Meanwhile, Apache
Windows and 4D Mac just keep on serving pages and don't return any
errors until they've got 10 times the request loading.
What's going on here ? Why is 4D web server on Windows so hugely
different from 4D on Mac or Apache on Windows in this regard ?
Category 2 below is the one I would like to be in because although
the response times are slow, the server is absorbing the load and
therefore I can optimise the dynamic pages, handle the 403's and the
site generally runs smoother.
In view of these results, my customer has just instructed me to
configure Apache in front of 4D on Windows so I now have about a day
(!?! :) ) to learn something about Apache rewrites and come up with a
proof of concept prototype. I'm not sure however if it will make any
difference since 4D is still at the end of the line (for dynamic
pages anyway). The question is whether 4D (Windows) error threshold
will just be the same in response to proxy forwarding by Apache as it
is when serving directly.
Here are the results of the loading tests for anyone interested. All
tests are for serving a 200k static page (no dynamic or Active 4D
involved)
Reference points are the 4D error threshold load (the loading at
which 4D web server machine starts to return errors) and the maximum
tested load of 200 RPS.
CATEGORY 1 - LOW ERROR THRESHOLD (~ 20 RPS), LOW CAPACITY, SHORT
RESPONSE TIMES
RPS = Requests Per Second.
************ 1] 4D Windows (Standalone) ************
25 RPS:
Error split (Socket / http): 10%/73%
Page rate: 13600 PPH
Response time: 1.3s
200 RPS:
Error split (Socket / http): 75%/22%
Page rate: 13400 PPH
Response time: 1.1s
************ 2] 4DMicrosoft IIS ***********************
25 RPS:
Error split (Socket / http): 0%/97%
Page rate: 17280 PPH
Response time: 1.s
200 RPS:
Error split (Socket / http): 15%/84%
Page rate: 2880 PPH
Response time: 2s
CATEGORY 2 - HIGH ERROR THRESHOLD (200 RPS), HIGH CAPACITY, LONG
RESPONSE TIMES
************ 3] Apache Windows ***********************
25 RPS:
Error split (Socket / http): 0% / 0%
Page rate: 13020 PPH
Response time: 3s
200 RPS:
Error split (Socket / http): 0% / 0% <-- (not a mistake)
Page rate: 20400 PPH
Response time: 28s
************ 4] 4D Mac OS/X ***********************
25 RPS
Error split (Socket / http): 0% / 0%
Page rate: 15300 PPH
Response time: 1.1s
200 RPS
Error split (Socket / http): 0% / 14% <-- (also not a mistake)
Page rate: 22740 PPH
Response time: 38s
NOTES: All Windows tests on a 2.4 Ghz Pentium, Mac test on 2 Ghz
Intel Mac Powerbook
4D 2004.5 Standalone in all cases.
_______________________________________________
Active4D-dev mailing list
[email protected]
http://mailman.aparajitaworld.com/mailman/listinfo/active4d-dev
Archives: http://mailman.aparajitaworld.com/archive/active4d-dev/