Hello,

We're working on a server that will be used to serve a large number of
mostly-idle clients over SSL connections.  As we are starting to test
our scalability, we are finding that the memory used by each SSL
connection is one of our limiting factors.

We are measuring about 10K per session when we use just TCP, and
closer to 50K when we use SSL over TCP.  We are using SSL3.1/TLS1.0.
Both our TCP server and SSL/TCP server are implemented using
boost::asio.

Looking around at the problem, we found this change to OpenSSL in the
CVS repository:

    http://cvs.openssl.org/chngview?cn=17238

We installed a copy of openssl-SNAP-20081210 (which includes this
change) to test with, and modified our code to set the
SSL_MODE_RELEASE_BUFFERS flag on the context.  This appears to be
working as its supposed to: when I run everything under the debugger
and set a breakpoint on the call to OPENSSL_malloc in
freelist_extract, it gets called a few times, then is not called again
while I'm bringing up my test connections.

However, memory usage remains about the same; over 1K connections my
process goes from 10MB RAM to 48MB RAM, about 38KB/connection.

We're a bit stumped about what to do next.  I was hoping somebody who
was more familiar with the OpenSSL code could suggest some other ways
we could reduce memory usage, or perhaps troubleshoot our use of
SSL_MODE_RELEASE_BUFFERS.

Thanks for any suggestions,

----Scott.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to