viernes, 19 de septiembre de 2014

Request Queuing en New Relic

Una de las herramientas que usamos en teowaki es New Relic para monitorizar el rendimiento de la API. Nos permite saber que páginas son las más lentas para optimizarlas y que areas de la aplicación necesitan mejoras.

Ayer por la noche nos empezaron a llegar alertas por mail de problemas con el Apdex, que mide el rendimiento de la aplicación




No había ningún motivo aparente, ya que no habíamos hecho ningún cambio significativo en los servidores ni había picos significativo de tráfico. Tampoco había carga en las máquinas y todos los servicios estaban levantados correctamente (redis, memcache, unicorn, nginx).

El problema era con el Request Queuing, que había subido desde prácticamente cero hasta unos 100ms, donde se había quedado estable. Este parámetro mide el tiempo desde que llega la petición al servidor web (en nuestro caso nginx) hasta que es servida por el servidor de aplicaciones (en nuestro caso unicorn).

Si tiene un valor alto quiere decir que el servidor de aplicaciones no es capaz de servir todas las peticiones que le llegan y se quedan encoladas en el servidor web y la solución habitual es optimizar la aplicación para que sirva las peticiones más rápido o añadir nuevos servidores de aplicaciones para distribuir la carga.

Para que aparezca esta métrica en las gráficas de New Relic, se debe añadir la cabecera X-Request-Start tal y como explican en la documentación.

Como la primera opción de reiniciar nginx y unicorn por si tenían algún problema no funcionó, el siguiente paso fue leer con detalle la documentación. Si el servidor web y el servidor de aplicaciones están en diferentes servidores físicos, hay que tener cuidado con el retraso entre relojes de los servidores, lo que llaman Clock Skew, que se soluciona instalando NTP.

NTP es un protocolo que permite sincronizar el reloj de nuestros servidores con bastante precisión a partir de una red de servidores distribuida y la instalación es tan simple como añadir un paquete
$ sudo apt-get install ntp
En este tutorial de Digital Ocean hay más detalles de configuración, pero en mi caso con la configuración por defecto ha sido suficiente. Y unos minutos despues de instalarlo los tiempos de respuesta han vuelto a su valor habitual


No se el motivo por el que se ha desincronizado de los servidores, pero bueno, al menos ya está solucionado :)



















viernes, 5 de septiembre de 2014

Eutanasia. El derecho a decidir

Normalmente en este blog siempre escribo sobre temas técnicos, pero a veces, pasan cosas en la vida que te hacen reflexionar, como hace unos años cuando escribí Sobre la (in)competencia médica.

El viernes pasado por la tarde, despues de un par de días con dolor de estómago y algo de fiebre, me subió la fiebre a casi 39, así que nos fuimos al centro médico, que nos redirigió a urgencias. Despues de unas horas y algunas pruebas, me diagnosticaron una apendicitis aguda y a la mañana siguiente me operaron de urgencias. No fue la mejor forma de celebrar que ese mismo día nos habían aprobado la beta de datawaki en heroku y que empezaba las vacaciones, pero las cosas vienen como vienen.

La primera reflexión es la suerte que tengo de vivir en un pais desarrollado, si esto mismo me hubiera pasado en un país subdesarrollado (o hace 100 años), la evolución más probable había sido que se me habría roto el apéndice, y ahora mismo ya estaría muerto o retorciéndome de dolor con una peritonitis sin posible cura.

En el post que he comentado antes, hablaba sobre lo despistada que sigue estando la medicina tradicional en temas musculares y óseos. En cambio en este caso no tengo ninguna queja, me parece que el trato recibido y la profesionalidad de todos los implicados en el hospital Ramón y Cajal de Madrid ha sido excelente.

Una vez operado, la planta de cirugía estaba completa, así que los días que he estado en el hospital los he pasado en otra planta, donde la mayoría de pacientes eran mayores y dependientes.

Mi compañero de habitación era un señor de 79 años con leucemia, ingresado por problemas respiratorios. Nos dijo que no podían hacerle un transplante de médula debido a su edad, así que tendrá que convivir con la enfermedad lo que le queda de vida. El pobre hombre lo estaba pasando bastante mal, con malestar general y estaba muy delgado y cansado.

Uno de los efectos de la leucemia, es la sudoración nocturna, lo que no le permitía dormir y en cuanto se dormía, se le empapaba la cama y se despertaba con frío. Además estaba con fiebre, lo que le incrementaba aún mas el malestar.

Dentro de unos días probablemente se encontrará algo mejor, le darán el alta y volverá a estar unas semanas en casa, hasta que de nuevo le ataque otra enfermedad, ya que por las defensas bajas de la leucemia está enfermo bastante a menudo, y probablemente tendrán que volver a ingresarlo.

Hablando con él nos estuvo contando un poco su vida. Por lo que nos contó ha tenido una vida muy feliz, con un trabajo de responsabilidad del que estaba bastante orgulloso, felizmente casado, y con cuatro hijos ya mayores todos con la vida resuelta.

Al pobre hombre se le veía agotado, sin ganas de vivir, además, nos contó que su mujer estaba con Alzheimer bastante avanzado y hablaba con muchísima pena de ella. Decía que la echaba mucho en falta.

Y de aquí el título del post. Me parece muy triste que una persona con una enfermedad sin cura, a la que solo le esperan algunas temporadas de encontrarse más o menos bien, junto con otras en las que realmente lo pasa mal y sin ilusion por vivir no tenga el derecho de morir dignamente.

Está claro que muchísima gente prefiere seguir viviendo hasta la muerte natural y que la mayoría no optaría por esa opción, pero espero que algún día tengamos la opción de poder decidir y no estar sufriendo cuando ya crees que has hecho todo lo que tenías que hacer en este mundo.

Si algún día estoy en ese estado, espero que al menos me den la opción, y si aquí no puedo y es lo que quiero, que me trasladen a donde si se pueda


Por último, si teneis dolor agudo estomacal con fiebre alta, rápido a urgencias, que es una combinación que puede ser muy grave....