[Zope-dev] TESTING TOOL & A ZOPE TEST

Theodore Patrick tpatrick@IndigoNetworks.com
Sat, 6 Mar 1999 12:07:24 -0600


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01BE67FC.33363484
Content-Type: text/plain;
	charset="iso-8859-1"

HEY DEV-ZOPE,
 
I gather several of you out there know about this but for those who don't:
 
<I AM A DEVELOPER & HAVE NOTHING TO DO WITH THIS PRODUCT - NO FLAMES PLEASE>
 
We have been using this product for the last week and it has made a
tremendous difference in the quality of the software we are developing with
ZOPE and other web tools. As I though about it, many out there would benefit
knowing about this tool, as I didn't until recently.
 
</I AM A DEVELOPER & HAVE NOTHING TO DO WITH THIS PRODUCT - NO FLAMES
PLEASE>
 
WEB HAMMER 2.1 - Product Review
It simulates web requests, LOTS OF THEM.
You can configure it to do the following:
 
Flood any URL with 40 Simultaneous connections(Get,Post,Head Requests)
One Page of Settings - Easy to Use. - See attached File.
 
**BE CAREFUL YOUR SYSTEM ADMINISTRATOR WILL FREAK OUT!!!!!**
 
If you want to know when your server will crash, this will find that limit.
 
We started using the application on several PERL and ZOPE apps in the office
and we immediately found out where our apps were weak. In one case, one code
change gave us 5X scalability on a simple script, we would have never known
without the tool. We are also using it to test our form collection scripts
and the database behind. Since you can do a POST we were validating
middlewear and Database entries in no time, It is easy to check for errors
with 1-2 Post try 40,000 --> You will find bugs.
 
Try simulating 40,000 form submissions in 20 minutes and see where your
database and server are. First time we ran the app it smoked everything
(WebServer+Middlewear+Database(Oracle 8.0.5)). Nothing but Ashes!!! After
some minor code changes we were handling the load fine.
 
It costs some $85.00, but it lets you sleep at night knowing your system
won't break, under the most strange & serious circumstances. Or it will tell
you when you need to switch to bigger iron.
 
You can get it at http://www.serverobjects.com/products.htm#WebHammer
<http://www.serverobjects.com/products.htm#WebHammer> 
 
There is an evaluation copy that supports 2 threads per second, so you can
try it for free.
 
We have configured 2 Win boxes to simulate the loading on our servers. Each
one does nothing but load test. If you are putting your reputation on the
line, test to find you code's limits before your client does. It is $85 of
insurance we would pay over and over.
 
<ZOPE>
We ran this tool against the Zope Server on some complex scripts, because of
ZOPE's caching ability after the first couple of hits the server screamed!
In our testing after ZOPE rendered the first page everything else seemed to
come out of the cache. Zope also would thrash if the object:
 
A. was not cached
B. was a unique request
C. involved a database connection.
 
 
<INDIGO THRASH TEST>
Thrash v. To cause a server to use memory and resources violently. If your
system monitor goes 100%,2%,100%,15%,100% quickly you are Thrashing. As this
is very OS dependent and very very code dependent. 
 
Server Hardware = Dell 410 DUAL P400 Raid0 2-9gb + 512RAM (PLENTY OF ZIP)
 
TEST is similar code on identical Hardware
 
1. Linux-ZApache-ZOPE = "Min Thrash - No Death" --> It is very difficult to
Kill.
We ran 80 Threads across the box and killed the database but the middlewear
and web server were still waiting for more requests. Quite a show for
Linux/ZAP/ZOPE. Easy to code.
 
2. Linux-Apache-MODPERL = "Min Thrash - No Death" --> It is very very
difficult to Kill.
We ran 95 Threads across the box and killed the database but the middlewear
and web server were still waiting for more requests. Quite a show for
Linux/APACHE/MODPERL. Hard to code-requires experience.
 
3. NT-IIS-PERL= "MAX Thrash & Death" --> 40 Threads over 10 Minutes = IIS
DEATH
There is what looks to be a memory leak in IIS that causes a strange
response in IIS4 sp3. It is similar to the server vomiting on itself. The
memory requirement grows and then peaks and goes back to 10%, weird. We are
working on tuning and some other strategies. This is really an IIS/NT
problem it doesn't handle threads anywhere close to Linux/Apache.
 
4. NT-IIS-ZOPE= "MED Thrash & Death" --> 40 Threads over 20 Minutes = IIS
DEATH
SAME As PERL - There is what looks to be a memory leak in IIS that causes a
strange response in IIS4 sp3. It is similar to the server vomiting on
itself. The memory requirement grows and then peaks and goes back to 10%,
weird. We are working on tuning and some other strategies. This is really an
IIS/NT problem it doesn't handle threads anywhere close to Linux/Apache.
 
We are working on Tuning IIS4 --> See
http://www.microsoft.com/backstage/whitepaper.htm
<http://www.microsoft.com/backstage/whitepaper.htm> 
------------------------------------------------------------
</INDIGO THRASH TEST>
 
 
<?>Is there a way to preload ZOPE's cache? Just a thought.</?>
 
We also tested input from forms into a database from ZOPE, Although our
results are specific to our implementation, typically the bottleneck is
opening and closing the database connections. It caused allot of thrashing
on both sides(middlewear & database).
 
<DigCre>Hint, Hint ---> Any word on Aqueduct Integration for Zope?</DigCre>
 
Overall the ZOPE process was as fast as any we have seen, ColdFusion and
other middlewear packages. Considering the time we saved coding &
configuration, Zope is worth its weight in gold. Zope also scales very well
on very complex queries.
 
<ZTABLES>
Input from forms to ZTABLES is 40X-50X Faster(Tested!)than dealing with
database connections. We are collecting the data into ZTABLES and then
replicating it into Oracle during the wee hours. The design is faster than
anything out there.
 
ADD indexing or searching -->ZTABLES(Period!) Searching a database live in
Zope takes a hit(!!!potentially every request is unique!!! = No Caching),
but moving the data into the ZTABLES first makes the server sing. It is a
performance boost that you have to see to believe.
 
Why don't you guys charge for ZTABLES & AQUADUCT as components? I would not
mind paying for it as I  gather everyone else wouldn't. Considering the
advantages are HUGE!!! 
</ZTABLES>
</ZOPE>
 
Just thought you ought to know! 
 
Theodore E. Patrick
email: tpatrick@indigonetworks.com <mailto:tpatrick@indigonetworks.com> 
phone: 615-777-0070 ext.125
 
Indigo Networks - The Ultimate Choice In Who Sees You.
http://www.indigonetworks.com <http://www.indigonetworks.com> 
 
 

------_=_NextPart_000_01BE67FC.33363484
Content-Type: image/gif;
	name="hammer.gif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="hammer.gif"

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
6lAqmlo1mqP19aI62qPjNKM+GqTayaNCWqQbBaRGmqT8siBapaROymFI+qRSKpupl0ZTeqVchljH
t6Vc2qVe+qVgGqZiOqZkWqar1VRYmqbLpGZq6qQfI2gE2qZS+qboFmkOKKd4+iUf1muk/panfqqn
A8gJSUZm0mhrpWmmiJqoirqojNqojvqovhWApgMHmpYETEhzxpOgmrqpnNqpnvqpXzaEVQoPqGFl
d4Z0f8qiotovdFCqLYdxOZeqG7qqTNqqD7hxR1mosSqrFkqrI8Igvvo6cXJsevaEvIqiwXoYZqGQ
xwp8yVoawMqszcp7z6oUDVKt09qm2IqX0Zqtx7qtQtmt3iqr4Lokyzqu5FoidEqp6Jqq5QqociCt
7fp67wqa4jqveFqvtHKu+Jqv6jqpFyOv/Wp6+kox/Dqwalqw6xqwCKut/3qtAtuw9/mw9yqxU6qw
ANsHEWuxl4exEMuxV+qxFQuySiqy/gdLsiVLsSeLskZqsrbKsikbYwULsyTqsvFKs0lqsz3INIyY
A/rFaVwDhWZynbfqIoMmZm8CjUmraEvLpzwmmMEmrNOjEIvGl/HXDD+LtCQntUEbp9ygsi/rM0X7
ahGZZz27qybilA32ChPZanTWtn5JZ5HogEL7DlXrHXcKtE7rkMPDp+GhtrECtjcrtqTBgnnrs99W
tk4CuC5Ia0uJlFRWjQhmcUppjUfgM8KGuMP2jHuLZH07txCIttwkuDtLuJbKNpL4tJG7Y78mmD/2
aF7bEpMmN1lSt2Mmjf2luJILdH4LkRbia6dGYsT6ufbgJssWaTNGuzZmvNS2urh7/rzQATtQyDlr
A7p1O7oyC3G8a2aP2zrcC2tuG6uMqyNO5rba87alNr6uayC8i2OverXgO2Pgm3Gxq2xNWSUk9zMT
ub/ES2xGp76Ik7+5OrdbS02kS6piK264Oo19imXQc6p2Cm6TsrwQfL/JNmbpS7Rjm5RuM2nzS7mG
kbr4q7vhcL/9hWyRy76SSL0k1sD/q8G9u2eu5r8KHLjZi7l9qXGPOLm+u2giHL2ba3AdB5FOicFl
JmKORrkux2iDA7ginGPYaLe4WqxOu7X8+5Doe8Say8QErMAeLCYH/AL5dmVHGb8uPG1cPMOwO8FD
J72XOsAAfMW+22hwC7zW+MQy/pzAM7fDNHzFuipl42bE3yu6dTzD8lvA2HujaDkQHUwg8wu/h3y8
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

------_=_NextPart_000_01BE67FC.33363484--