I've done a lot of benchmarking over the last 6 years and SSL
performance simply eats up CPU and RAM. Back in 2002, I ran over 400
benchmarks on Tomcat 4.x with Remy (a tomcat developer). Even for a
simple static page, SSL ate up a ton of resources.

Regardless of the application, a 450mhz CPU can only handle 3-5
concurrent requests reliably. The basic formula I go by is this.

500mhz - 250 ssl signatures per second

since SSL scales linearly, you just multiply by the mhz or number of CPU.

250 x 4 = 1000 ssl signatures per second for a 2ghz cpu

Now to figure out what that means in terms of requests/second, all you
have to do is figure out how many requests a page view is. So say I
have a page with 9 images. that means the first time the page is
requested, there's 10 requests total.

250 signature/second / 10 signatures/request = 25 requests /second

25 SSL requests/second is the theoritical maximum for a 450-500mhz
CPU. When  you take concurrent requests into account, it roughly
translates to 3-5 concurrent requests depending on how many images are
on the page.

As far as I know, this is true of commercial tools like webBench,
mercury and others.  So how do people test SSL?  there's really only 2
practical approaches.

1. have a ton of clients and have 3-5 threads per machine
2. use a SSL enabled router to decrypt the traffic, though you'd need
2 of them to test effectively.

What big sites like amazon, buy.com and the others do is use Network
Attached SSL. The webservers only handle HTTP traffic and the SSL is
done at the router. If you need to scale SSL, I would recommend going
with that approach.  Using software SSL will mean your production
environment will need to have 30-40 servers to handle moderate SSL
traffic for a small e-commerce site.  Back before Netledger was bought
out by Oracle, they had over 400 machines to handle the traffic. Once
they got hardware accelerator and hooked it up, their performance
improved 3-5x.

I hope that helps

peter


On 5/11/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> I'm not sure I understand what you're saying here.  How in the world are
> you supposed to load test a secure web application if this is the case?  I
> don't see how testing a secure application can be so much more memory
> intensive for jmeter than a non-secure web application.  I am using a
> dual-processor server with plenty of power to run jmeter.  Is there
> nothing I can do to reduce the amount of memory the script is using so
> that jmeter won't crash?
> 
> Is it possible that something with the way my script is handling SSL could
> be the culprit?
> 
> Elli
> 
> > HTTPS is a tremendous CPU hog and will eat up plenty of RAM.  In
> > general, a 2ghz CPU will max out with 20 concurrent HTTPS requests. More
> > than that, you're not really stressing the server.
> >
> > if you really need to test HTTPS, I would recommend keeping each
> > client machine to 10 threads. Most of the sites that require heavy HTTPS
> > use hardware accelerators.  I personally don't recommend using software
> > HTTPS if the expected HTTPS load is more than 10-15
> > concurrent.
> >
> > for example, a 450mhz P3 can reliably handle 3-5 concurrent requests.
> > More than that the server will crash. this is primarily a hardware and
> > IO limitation.
> >
> > peter lin
> >
> >
> > On 5/10/05, Elli Swift <[EMAIL PROTECTED]> wrote:
> >> Hi all,
> >>
> >> I am load testing an HTTPS application and I'm continually running
> >> into this out of memory error:
> >>
> >> [GCException java.lang.OutOfMemoryError: requested 8208 bytes
> >>
> >> The garbage collection comes along but just doesn't seem to be
> >> clearing out enough room.  I have increased the heap size to 1024, I'm
> >> running jmeter on a server with almost 6GB of RAM, I have no listeners
> >> in my test, I'm running in non-gui mode and I'm only running a test
> >> with 25 users looping 4 times through (it dies almost immediately
> >> after the second loop finishes).
> >>
> >> I created my script using the HTTP proxy server (I was able to disable
> >> HTTPS in order to record the script) and I noticed that it recorded
> >> quite a few things in each of the Browser-derived headers for each
> >> HTTP request. (If-None-Match, Referer, Host, Accept-Language,
> >> User-Agent,
> >> If-Modified-Since, and Accept).  Could any of these be using up
> >> unnecessary resources?
> >>
> >> This truly puzzles me, as we were able to create a load test script
> >> for one of our other (non-HTTPS) applications and fire off close to
> >> 250 or 300 users and leave it running for hours without any problems.
> >> Any suggestions would be very helpful!!
> >>
> >> Elli
> >>
> >>
> >
> > --------------------------------------------------------------------- To
> > unsubscribe, e-mail: [EMAIL PROTECTED] For
> > additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to