miércoles, 27 de agosto de 2014

Aumentar Memoria a Tomcat

Hola, muchas veces debemos asignar mayor recurso de memoria a tomcat, y esto lo podemos hacer configurando el archivo catalina.sh en linux o catalina.bat en windows, este se encuentra en el directorio bin de apache-tomcat, agregando la linea:

export JAVA_OPTS="-Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=256m"

En otros casos.. cuando estamos desarrollando con eclipse, y tenemos ahí configurado nuestro tomcat con el plugin sysdeo, podemos agregar estas variables al parametro JVM settings que esta en :

Windows -> preferences -> >Tomcat -> JVM Settings

y ahí clikeamos add al campo Append to JVM Parameters, se abre una ventana de dialogo y podemos agregar las mismas opciones de jvm

-Xmx512m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m

con esto ya tendríamos mas memoria asignada de nuestra java virtual machine a tomcat

saludos

Ver procesos Java

Hola, en algunos casos tenemos mas de un proceso java corriendo en nuestros sistema linux, para ver que process ID corresponde a que proceso Java podemos ejecutar el siguiente comando por consola, y desde cualquier ruta de nuestro SO:

slack@zion:~/programas/redmine-2.5.1-1$ ps -fea | grep java

el resultado de este debiera ser similar a lo siguiente, siempre y cuando tengamos procesos java corriendo.

slack     4652  4650 11 09:40 ?        00:06:29 /usr/bin/java -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms512m -Xmx1024m -jar /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar -os linux -ws gtk -arch x86_64 -showsplash /home/slack/programas/eclipse_kepler//plugins/org.eclipse.platform_4.3.2.v20140221-1700/splash.bmp -launcher /home/slack/programas/eclipse_kepler/eclipse -name Eclipse --launcher.library /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212/eclipse_1508.so -startup /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar --launcher.appendVmargs -exitdata 140003 -product org.eclipse.epp.package.jee.product -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms512m -Xmx1024m -jar /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
slack    10308     1 58 10:22 ?        00:09:44 /home/slack/programas/java/jdk1.6.0_05/jre/bin/java -Dcatalina.home=/home/slack/programas/apache-tomcat-5.5.33 -classpath /home/slack/programas/java/jdk1.6.0_05/lib/tools.jar:/home/slack/programas/apache-tomcat-5.5.33/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap start
slack    11663  3189  0 10:38 pts/0    00:00:00 grep --color=auto java


Bueno, aunque parezca difícil de leer, podemos identificar claramente aquí los procesos java corriendo en nuestro sistema,  donde :

primero va el usuario que esta ejecutando el proceso, aqui es : slack

luego de este parametro se indica el process id, PID, donde aqui para el primer proceso es : 4652

y seguidamente va la hora desde que corre el proceso, aqui para mi primer proceso de la lista es : 09:40

y posteriormente va el comando que se esta ejecutando, aqui es : /usr/bin/java -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms512m -Xmx1024m -jar /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar -os linux -ws gtk -arch x86_64 -showsplash /home/slack/programas/eclipse_kepler//plugins/org.eclipse.platform_4.3.2.v20140221-1700/splash.bmp -launcher /home/slack/programas/eclipse_kepler/eclipse -name Eclipse --launcher.library /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212/eclipse_1508.so -startup /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar --launcher.appendVmargs -exitdata 140003 -product org.eclipse.epp.package.jee.product -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms512m -Xmx1024m -jar /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

Este corresponde al ide Eclipse, el segundo proceso que podemos identificar de la misma forma corresponde a Tomcat y el tercer proceso es el comando ps -fea | grep java

Entonces cuando queramos matar alguno de estos procesos java, identificamos su PID y ejecutamos por consola:

slack@zion:~/programas/redmine-2.5.1-1$ kill -9 4652

entonces aqui acabamos de matar el proceso Eclipse, y aunque no era el que quería matar resulto bien, si ejecutamos nuevamente el ps -fea , ahora vemos que solo tenemos el proceso tomcat corriendo

slack@zion:~/programas/redmine-2.5.1-1$ ps -fea | grep java

slack    10308     1 75 10:22 ?        00:20:45 /home/slack/programas/java/jdk1.6.0_05/jre/bin/java -Dcatalina.home=/home/slack/programas/apache-tomcat-5.5.33 -classpath /home/slack/programas/java/jdk1.6.0_05/lib/tools.jar:/home/slack/programas/apache-tomcat-5.5.33/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap start
slack    12179  3189  0 10:49 pts/0    00:00:00 grep --color=auto java


ahora matamos tomcat :

slack@zion:~/programas/redmine-2.5.1-1$ kill -9 10308

y volvemos a ejecutar :

slack@zion:~/programas/redmine-2.5.1-1$ ps -fea | grep java

y solo tenemos como resultado :

slack    12263  3189  0 10:52 pts/0    00:00:00 grep --color=auto java

eso es,

saludos

lunes, 12 de mayo de 2014

Argo UML

Siempre decían que del 100 % del tiempo para el desarrollo de un software, debía ser el 70 % del tiempo destinado a modelamiento y el 30% del tiempo restante en construcción, sin embargo sabemos que en la liberación de los módulos de las aplicaciones estos porcentajes se dan vuelta y terminamos con un 30% del tiempo en modelamiento y el 70% en construcción.

Es por esto que debemos en la experiencia ir mejorando nuestros métodos y formas del uso del tiempo para el modelamiento del software. y también adquirir algún grado de expertis en alguna herramienta de modelamiento que nos ayude a modelar mas y programar menos.

He probado algunas como poseidon, argo, rational, plugin de netbeans y eclipse, y otras, pero ya llevo buen tiempo usando ArgoUML, y me parece una de las mejores, aunque últimamente tigris no la ha actualizado cumple con los estándares y especificaciones para UML.

Con Argo tu puedes crear un proyecto, crear los packages y los diagramas, que luego generaran las clases Java para llevarlas a tu proyecto eclipse.
Si trabajas con patron MVC, Struts, Spring, u otro modelo de 3 capas te sera util ordenar tu proyecto en packages de implementacion, organizando los manager y los impl tal como spring o struts lo requieren.

Una técnica que utilizo habitualmente cuando tengo que analizar un modelo de negocio u otra implementación, es comenzar diseñando los casos de uso en un package usecase desde el nivel 0 al nivel requerido para el detalle de las funcionalidades.

Argo contiene todos los elementos para los diagramas de casos de uso, diagramas de despliegue, diagramas de clases, diagramas de colaboracion, de secuencia, etc..

Luego con las opciones puedes exportar tu modelamiento a codigo fuente Java para levantarlo desde eclipse.






http://argouml.tigris.org/