miércoles, 23 de junio de 2010

Activar Java NIO en Tomcat6

Introducción
Una de las características más esperadas que introdujo la versíon 1.4 de Java fue un nuevo sistema de IO adaptado a los sistemas modernos. Esto permitía adaptar el formato de entrada/salida a las nuevas características de las CPUs -principalmente MultiThread- haciendo que las peticiones fuesen "no bloqueantes" y por lo tanto "sean manejadas por threads".  No voy a entrar en mucho detalle sobre cuáles son las diferencias -ya que pienso que es un tema de programación- pero sí que voy a explicar por qué nos aplica en términos de sistemas:
  • No permite escalar más y utilizar mejor los threads de las CPUs. De esta forma, tendremos menos cambios de contexto y por lo tanto mejor rendimeinto
  • Uso de Socket Asíncronos. De esta forma, seremos capaces de soportar más peticiones concurrentes en nuestros servidores de aplicaciones.
  • Podemos usar Resource Control. De esta forma, los límites y uso de recursos están mejor controlados en el sistema.
Sin embargo, no ha sido hasta la versión 6 de Tomcat cuando hemos podido empezar a utilizar esta nueva configuración.


Configuración de Apache Tomcat 6.x
Para activar el funcionamiento NIO en Tomcat 6, siemplemente editaremos el archivo de configuración <CATALINA_HOME/conf/server.xml> y modificaremos el valor de la propiedad:
protocol="HTTP/1.1"
por
protocol="org.apache.coyote.http11.Http11NioProtocol"
Por ejemplo, podemos añadir un nuevo "connector" en el puerto 8585 que use el formano NIO de la siguiente forma:
    <!-- NIO Connector With Compression -->
    <Connector
        maxThreads="256"
        enableLookups="false"
        protocol="org.apache.coyote.http11.Http11NioProtocol"
        keepAliveTimeout="5000"
        maxKeepAliveRequests="1000"
        port="8585"
        connectionTimeout="20000"
        compression="on"
        bufferSize="8192"
        redirectPort="8443"
        URIEncoding="UTF-8"
    />
Conclusiones
Como hemos visto, cambiar al nuevo sistema de IO (NIO) que nos proporciona Java a partir de la versión 1.4.2 es realmente sencillo. En las próximas entregas veremos si -como dicen en Sun- es un sistema revolucionario y proporciona un rendimiento superior en sistemas con mucha carga.

Referencias

No hay comentarios:

Publicar un comentario