SafeChildren Banner

Havoc Oracle Solaris Experts

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