Ir al contenido principal

Entradas

Script recolector de métricas

Al probar una aplicación debemos contar con herramientas que recaben información por nosotros y las resguarden para su posterior consulta. Instalación (Fedora 22) # dnf install -y sysstat Manos a la obra Normalmente, cuando se tiene el JAVA_HOME establecido como debe ser, tendremos disponible el comando jps, el cual nos ayuda a indentificar los procesos Java que están siendo ejecutados al momento. Si solo existe un proceso Java, podemos evitarnos la tarea de estar buscándolo a cada reinicio. Con la siguiente cadena de comandos, podemos realizar de manera automática el guardado de las métricas. while(true) do date +'%Y-%m-%d,%T,'| tr -d '\n'; ps -p `jps | grep Main | awk '{print $1}'` -o etime,%cpu,%mem,rss,cmd; sleep 1; done > metricas.log A continuación le damos un poco de tratamiento para que se vea claro lo que buscamos. head -n1 metricas.log | awk '{print $1,$2,$3,$4}' > tmp.log; cat metricas.log | ...

Un bajo consumo de CPU durante pruebas no significa que todo vaya bien.

Un monitoreo pobre durante las pruebas de QA se traduce en problemas y dolores de cabeza en producción, en especial, para los administradores. En las aplicaciones basadas en Java, existen componentes intrínsecos a los servidores de aplicaciones/JVM, como el GC. También existen los componentes de las aplicaciones, como los hilos http o las conexiones abiertas hacia base de datos o ldaps. Es importante tener la visión completa desde que llega una petición hasta que ésta es retornada. Tengo que decir que debemos ser cuidadosos con los costos de la demasía en el monitoreo, en especial, por el overhead que ésto conlleva. En papel o en una herramienta de software, es posible realizar un mapa con las dependencias a otros servicios, la interacción que tiene; el cual posteriormente podemos anexar en el test plan . Ésto nos ayudará a plasmar y detectar los sitios donde colocaremos nuestros scripts recolectores. El leitmotiv de este post es describir la importancia de mirar las entr...

Primer final

Los siguientes párrafos son un borrador de un texto que estoy escribiendo. A modo de experimento, lo libero para releerlo algunas veces más, antes de decidirme por él, como una constatación de la claridad de la narrativa que busco. Del Después El reloj casi anunciaba las 3 de la tarde, los parroquianos conversaban con voces apenas perceptibles que se interrumpían con el repiqueteo de las campanas al salir o al entrar de los clientes. Yo esperaba a Elizabeth en la mesa de siempre, con el mismo café americano que todos los meseros conocían, y que sólo por mero mecanicismo, y a efectos administrativos, anotaban en sus comandas. La noche anterior Elizabeth me llamó. Una anomalía en su voz me vaticinaba la tempestad. Su tono melifluo y reservado escondía la cólera kamikaze, la boca del abismo al que se encaminaba y me arrastraría inexorablemente sin que mi voluntad presentara batalla. Así eran las cosas entre ella y yo, entre ella y todos. — Hola — Dijo ella, sentándose frente ...

Problema 12

The sequence of triangle numbers is generated by adding the natural numbers. So the 7 th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... Let us list the factors of the first seven triangle numbers:  1 : 1  3 : 1,3  6 : 1,2,3,6 10 : 1,2,5,10 15 : 1,3,5,15 21 : 1,3,7,21 28 : 1,2,4,7,14,28 We can see that 28 is the first triangle number to have over five divisors. What is the value of the first triangle number to have over five hundred divisors?     Solución:   /*  * To change this license header, choose License Headers in Project Properties.  * To change this template file, choose Tools | Templates  * and open the template in the editor.  */ package projecteuler; /**  *  * @author lyonn  */ public class C12 {     int tmpCont;     public void resultado() {       ...

Problema 25

Problema: The Fibonacci sequence is defined by the recurrence relation: F n   = F n −1   + F n −2 , where F 1   = 1 and F 2   = 1. Hence the first 12 terms will be: F 1   = 1 F 2   = 1 F 3   = 2 F 4   = 3 F 5   = 5 F 6   = 8 F 7   = 13 F 8   = 21 F 9   = 34 F 10   = 55 F 11   = 89 F 12   = 144 The 12th term, F 12 , is the first term to contain three digits. What is the index of the first term in the Fibonacci sequence to contain 1000 digits? Solución: /*  * To change this license header, choose License Headers in Project Properties.  * To change this template file, choose Tools | Templates  * and open the template in the editor.  */ package projecteuler; import java.math.BigInteger; /**  *  * @author lyonn  */ public class C25 {     public void resultado() {         int i = 1;     ...

Análisis de peticiones en logs. [1/2]

Introducción Últimamente me he interesado por la información que podemos obtener mediante los logs para utilizarla de forma proactiva. Por lo normal utilizamos los registros para detección de anomalías o desperfectos que afectan la operación de una aplicación, pero rara vez utilizamos toda la información que compone un log para proyectar un comportamiento u obtener el diagnóstico de cómo opera con "normalidad" nuestro sistema.  En esta entrada de blog me gustaría realizar un análisis que responda a la pregunta ¿vale la pena invertir horas en la optimización de código en una aplicación web? . Para ello, nos enfocaremos en la correlación de los tiempos de respuesta (aka TR) y el número de peticiones que el sistema resuelve en un periodo de tiempo. Podríamos auxiliarnos de pruebas de estrés, sin embargo, algunas veces no disponemos de los ambientes necesarios, y solo nos queda hechar mano de los registros productivo, aún así, es decisión de cada quién cómo obtener l...

Escribiendo...

Por fin me he resignado a escribir un poco de ficción dentro del contexto de las relaciones humanas, en especial, las inextricables relaciones amor-odio-amor. Nunca ha sido de mi interés meterme en esos asuntos, pienso que ya hay mucha literatura al respecto, como para ocupar más bytes en una empresa de tal naturaleza. He decidido hacerlo porque es algo que me impide continuar madurando, puesto que mis ideas me conducen a tal campo. Pretendo hacerlo con dedicación y cuidar un poco las ideas, que a ti, lector, te resulte soportable el gastar algunas horas de tu atención.  Estas son mis primeras señales de vida después de muchos meses. Pero como dicen "más vale tarde que nunca".