Instalando APR en Tomcat

Apache Portable Runtime

La Apache Portable Runtime (APR) es una librería que proporciona una mayor integración con los componentes nativos del sistema operativo donde se ejecuta Apache Tomcat mejorando de esta forma su rendimiento.

Además, si usamos el conector AJP para comunicarse con nuestra capa de frontal (p.e. apache2) esta librería reduce significativamente el número de threads que Apache Tomcat necesita.

En este post vamos a ver como añadir esta librería a nuestro tomcat para obtener este mejor performance.

Descarga la librería de aquí https://tomcat.apache.org/download-native.cgi

En mi caso he descargado la última de la serie 1.1.x (la v1.1.34 en el momento de escribir este post) ya que mi versión de openssl en mi sistema operativo debian 8 es la 1.0.1. Si tu versión de sistema operativo es mayor, descarga la última de la serie 1.2.x

Descomprime el paquete y posiciónate en el directorio jni/native

noroot@elsuper:/home/noroot$ tar -zxvf tomcat-native-1.1.34-src.tar.gz && cd tomcat-native-1.1.34-src/jni/native

Una vez ahí, vamos a instalar una serie de dependencias para poder compilar correctamente la librería

noroot@elsuper:/home/noroot/tomcat-native-1.1.34-src/jni/native$ sudo apt-get install libtcnative-1 libapr1-dev libssl-dev build-essential

A continuación, ejecuta el siguiente comando (en --with-java-home pon la ruta a tu JAVA_HOME y en --prefix tendrás que indicar la ruta de tu servidor de aplicaciones)

noroot@elsuper:/home/noroot/tomcat-native-1.1.34-src/jni/native$ ./configure --with-apr=/usr/bin/apr-1-config --with-ssl --with-java-home=/opt/jdk1.8 --prefix=/opt/liferay/liferay-7/tomcat-8.0.32

Una vez configurado, compilamos e instalamos

noroot@elsuper:/home/noroot/tomcat-native-1.1.34-src/jni/native$ make && make install

En este punto la librería está compilada y copiada en el directorio /lib del tomcat

Ahora vamos a indicarle al Tomcat que use esta librería añadiendo al final del fichero de variables de entorno /opt/liferay/liferay-7/tomcat-8.0.32/bin/setenv.sh lo siguiente

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib 
export LD_LIBRARY_PATH

Y por último reinicia el Apache Tomcat y verás en los logs que el servidor está ya utilizando esta librería