[Seaside] [BUG] VW High load problem
Roger Whitney
whitney at cs.sdsu.edu
Thu Oct 2 11:33:36 CEST 2003
I was trying to see what sort of load Seaside running in VW could
handle. I used the following code to send n sequential requests for the
same application.
n := 40.
Time millisecondsToRun:[n timesRepeat:
[client :=HttpClient new.
client get: 'http://localhost:8008/servlet/SeasideServlet/counter/']]
When n is high enough the server often throws an exception. The size of
n depends on the hardware speed the server is running on and which page
is being requested. On a 400 MHz PowerBook G4 requesting the store
example (which needs a few changes to run in VW) when n is 10 the
exception is often triggered. When I look at the stack trace I find
that in the following method at one point copy is an integer and obj is
a WVStateHolder. This is a problem as snapshot:isIdenticalTo:
compares the instance variable of the integer to that of WVStateHolder.
This is a random bug. However if you set n = 40 it has a very high
probability of occurring.
WAStateRegistry>>snapshot
| snapshot |
snapshot := SeasidePlatformSupport weakDictionaryOfSize: objects size.
objects keysAndValuesDo:
[:obj :copy|
(self snapshot: copy isIdenticalTo: obj)
ifTrue: [snapshot at: obj put: copy]
ifFalse: [snapshot at: obj put: obj shallowCopy]].
^ snapshot
By the way I can get 9 pages per second on the 400 MHZ G4 PowerBook
when requesting the store example from a separate machine on the same
local network.
----
Roger Whitney Department of Computer Science
whitney at cs.sdsu.edu San Diego State University
http://www.eli.sdsu.edu/ San Diego, CA 92182-7720
(619) 583-1978
(619) 594-3535 (office)
(619) 594-6746 (fax)
More information about the Seaside
mailing list