[Twisted-web] HTTPS server performance

Mircea Amarascu mircea.amarascu at gmail.com
Thu May 25 00:20:30 CDT 2006


I need a basic HTTPS server, without any web applications support,
so I've decided to use the listenTCP and listenSSL methods, together
with a twisted.web.http.HTTPFactory, a twisted.web.http.HTTPChannel protocol
and a twisted.web.http.Request handler.

I added a ServerContextFactory for SSL (like in echoserv_ssl.py example):

class ServerContextFactory:

    def getContext(self):
        """Create an SSL context.

        Similar to twisted's echoserv_ssl example, except the private key
        and certificate are in separate files."""
        print "Creating SSL context..."
        ctx = SSL.Context(SSL.SSLv23_METHOD)
        ctx.use_privatekey_file('serverkey.pem')
        ctx.use_certificate_file('servercert.pem')
        return ctx

if __name__ == "__main__":
    from twisted.internet import reactor
    reactor.listenTCP(8000, MyHttpFactory())
    reactor.listenSSL(8043, MyHttpFactory(), ServerContextFactory())
    reactor.run()

I'm testing this configuration with ApacheBench (ab), and I get some 800
requests/sec for HTTP, and only about 30 requests/sec for HTTPS. I now that
the ratio for HTTPS is about 60% of HTTP, so I was wondering if I'm
doing something wrong, or what is causing this problem.

Thank you.



More information about the Twisted-web mailing list