[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