He habilitado SSL en mi servidor proxy y he descubierto que el rendimiento ha disminuido de alrededor de 17k solicitudes por segundo a 5k solicitudes por segundo. Seguí el código en el ejemplo de chat seguro de Netty y no creo que haya hecho algo diferente.Cómo puedo aumentar el rendimiento SSL del servidor
He escrito un servidor ficticio para ver si he cometido algunos errores en mi proxy. Ejecutar el servidor SSL ficticio en el modo http normal es capaz de alrededor de 50k solicitud por segundo. Cuando habilito SSL en el servidor ficticio que cae a 28k solicitudes por segundo.
¿Hay algo que esté haciendo mal? ¿Se me escapa algo?
Estoy usando JDK 6 para compilar el código, ejecutando en JDK 7u4. Estoy usando Netty-3.5.0 también. Estoy usando zeusbench para ejecutar la prueba. Los parámetros de ensayo son: zeusbench -n 10000 -c -k 100 -C RC4_SHA "https: ///"
Fuente: http://pastebin.com/iahqr3zT
Edición 1: me he encontrado el servidor simulado a través JProfiler. La llamada a SSLContext.createSSLEngine en la fábrica de tuberías lleva (en promedio) 55,005 microsegundos (ese promedio se ha calculado a partir de 540 invocaciones del método).
Llamada SslHandler.handshake en el canal Toma conectada (en promedio) 46,284 microsegundos (ese promedio se ha calculado a partir de 540 invocaciones del método).
Entiendo que Netty no puede hacer gran cosa acerca de la llamada para crearSSLEngine, pero ¿podría SslHandler.handshake ajustarse mejor? Su toma casi tan larga como la generación del motor en sí.
¿Tiene la posibilidad de finalizar el SSL antes de que la solicitud llegue a su servidor? Lo ideal sería utilizar hardware dedicado para terminar el SSL. Amazons Elastic Load Balancer puede hacer esto también. ¿Cuál es la longitud de la clave SSL? La longitud de la clave tiene un impacto en el rendimiento http://www.javamex.com/tutorials/cryptography/rsa_key_length.shtml –
@JohnP Gracias por la respuesta. Terminar el SSL antes de llegar a mi servidor no es una posibilidad. Gracias por la sugerencia sobre la longitud de la clave SSL, es 2048 – blucas