14 de diciembre de 2007

RECOMENDACIONES PARA EL SUN JAVA SYSTEM APPLICATION SERVER 8.2

El servidor Sun Java System Application Server 8.2, viene incluido en el paquete de instalación de Java Studio Creator. Para efectos de desarrollo

EN LA PROGRAMACIÓN:

Concatenación:

Cuando a un mismo String le estamos concatenando constantemente nuevas cadenas, lo mejor es declarar StringBuffe en vez de String un Usar el método append(String str) de la clase StringBuffer en vez de concatenar directamente. Por ejemplo:

En vez de:

String str = "testing";

str = str + "abc";

str = str + "def";


Utilizar


StringBuffer tmp = new StringBuffer("testing");

tmp.append("abc");

tmp.append("def");

String str = tmp.toString();


Lo que ocurre en el primer ejemplo es que al final de él, tenemos 4 objetos creados; uno que contiene la cadena "testingabcdef", refrenciado por la variable str, otro que contiene la cadena "testing" sin variable de referencia, otro que contiene la cadena "abc" sin variable de referencia y un último que contiene "def", tambiéen sin variable de referencia. Aunque los tres últimos objetos son candidatos a ser removidos por el Garbage Collector, nada nos lo garantiza. Por lo tanto es basura que se acumula en la memoria y esto reduce drásticamente el rendimiento de la aplicación (no del servidor). Mientras tanto, en el segundo ejemplo, primero se crea el objeto que contiene "testing" al cual luego se le añaden 2 cadenas. La forma en que trabaja StringBuffer le permite añadir nuevas cadenas al objeto sin crear objetos adicionales. Por lo tanto al final solo quedan 2 referencias al mismo objeto.

Recolección de basura: en java existe algo llamado Garbage Collector localizado en la máquina virtual, el cual se encarga de liberar de memoria los objetos que dicha máquina considera no serán necesarios. Esta tarea se le puede facilitar al GC, si le asignamos null a las variables que no volvamos a utilizar. Esto, será como un flag que le indique al GC directamente, que puede liberar la posición de memoria que almacena dicho objeto. Sin embargo aunque nosotros marquemos las variables dcon "null", esto no garantiza en ningún moment que el vaciado de memeoria se realñizará inmediatamente. Si realizamos dicha petición manualmente (invocando System.gc();) simplemente le estamos haciendo una sugerencia a la máquina virtual, mas no es una orden que esta cumplirá inmediatamente, asi que no hay que confiarse.

Declaración de constantes: en caso de tener en nuestro código una variable “estática”, como por ejemplo PI, se puede declarar de esta manera:

public static final int PI=3.1416;

Esto por un lado nos ayuda a controlar el valor de la variable, pues de este modo no será posible modificarla más adelante, ni en la propia clase y mucho menos en clases de otros paquetes o subclases.

EN EL SERVIDOR

Logs: el escribir constantemente e innecesariamente en un log, obliga a tener acceso discos duros, lo cual reduce el rendimiento del servidor.

Niveles de logs: el servidor puede definir los niveles o frecuencia con la que hace log a sus diferentes módulos, por ejemplo, CORBA, JAAS, JMS, etc. Los niveles son:

  • FINEST: Máximo nivel de detalles

  • FINER: Nivel de detalle medio

  • FINE: Nivel de detalle mínimo

  • CONFIG: Mensajes relacionados con la configuración del servidor

  • INFO: Mensajes relacionados con la configuración o el estado del servidor, sin incluir los errores

  • AVISO: Advertencias, incluidas las excepciones

  • SEVERE: Eventos que interfieren en la ejecución normal del programa

Para obtener mayor cantidad de mensajes se recomienda FINE, FINER, o FINEST. Para condiciones normales el nivel de WARNING, y bajo condiciones de “benchmarking”, se recomienda SEVERE. Entre mayor sea el nivel de detalle, menor serà el rendimeinto del servidor, aunque un menor nivel de detalle en ambientes de desarrollo puede ser perjudicial, ya que en caso de presentarse errores, muy probablemente estos no se almacenarán en el log.

Los niveles se pueden ajustar en:

  1. Ir a la consola de administración del servidor de aplicaciones.

  2. Click en “Application Server”.

Figura 1

Menu Principal del SJSAS 8.2

  1. Click en la ficha “Registro”

  2. Clck en la sub-ficha “Niveles de Registro”

  3. Seleccione el nivel que desea para cada módulo.

Recargue automático: el servidor tiene por default activada una configuración que le permite “reescanear” las clases de una aplicación que ha sido desplegada, buscando y reflejando cambios que se hayan hecho en dichas clases. Se recomienda desactivar esto (sobre todo en producción), porque consume tiempo y recurso de forma innecesaria.

La forma de desactivarlo es:

  1. Repita los pasos 1 y 2 del apartado anterior.

  2. Luego en la ficha “Avanzada”, que aparece en el frame del lado derecho.

  3. Desactive las opciones referentes a “recargar” e “implementación automática”

  4. Reinicie el servidor.

Precompilar JSP’s: compilar los JSP’s es sinónimo de desgaste en tiempo y recursos durante el despliegue, por lo tanto, si estos están precompilados el rendimiento del servidor mejorará. Para indicar que se desea precompilar los JSP’s:

  1. Repita los pasos 1 y2 del apartado anterior:

  2. Active la opción “precompilar”

  3. Reinicie el servidor.

Tiempo de sesión: estipula el tiempo que tardará el servidor en desconectar una sesión por inactividad. Este tiempo por default es de 30 mins. Este tiempo se ajustará de acuerdo a las necesidades y entorno de la aplicación. Un tiempo muy largo tendrá como consecuencias el almacenamiento innecesario de muchas sesiones, y muy poco tiempo, causará molestias en el usuario final, al ser desconectado frecuentemente. Este valor puede ser ajustado en la consola del servidor en:

  1. Application Server >Configuracion > Contenedor Web

  2. Click en la ficha “Propiedades de sesión”

  3. Indique el nuevo tiempo (en segundos).

  4. Click en “Guardar”

  5. Reinicie el servidor.





No hay comentarios.: