El rendimiento, la percepción y el teléfono escacharrado...
Dice el doctor House que los pacientes siempre mienten… yo digo que los usuarios no siempre dicen la verdad cuando hablan de rendimiento… al final las consecuencias son similares: House o yo acabamos dando palos de ciego. Lo más curioso de la situación es que, al contrario de los pacientes de House, los usuarios no mienten de manera consciente tratando de ocultar trapos sucios. Los usuarios no siempre dicen la verdad por dos motivos: el primero, por que su percepción le engaña a menudo, el segundo por que no siempre es el usuario que sufre el problema de rendimiento el que nos da la información.
Os voy a contar una historia que ilustra la situación.
Llamada a soporte postventa de un cliente. En concreto llama el Director del departamento de producción de Tromperris. El nunca toca el software de gestión de Tromperris, pero que más da, el es el Jefe y resulta que sus indios están en pie de guerra por que los informes vitales que imprimen todos, absolutamente todos, los días tardan la barbaridad de diez minutos en generarse ¡inaceptable!. La gente de soporte se acojona, no sin motivo, por que ha llamado el Jefe y tal y escala el problema 'ipso facto' sin recabar más información. Así que aquí estoy yo lidiando con el problema.
¿Por qué el Jefe llamó y dijo diez minutos?. La historia es como sigue:
Jefe: Supervisor, ¿cuál es el problema más grave que hay con la aplicación de gestión de Tromperris?
Supervisor: No, sé… quizás los informes, algunos tardan mucho…
Jefe: ¿Cuánto es mucho?
Supervisor: No se… preguntaré a los indios, que son los que se quejan…
Indio: Los informes que más tardan son los de fin de mes, tardan más que el resto… como tres minutos...
Supervisor: Que barbaridad, ¡tres minutos!... Hay que tomar medidas inmediatas… se lo diré al jefe…
[El indio se encoje de hombros y sigue a los suyo…]
Supervisor: Jefe, ya se lo que tardan los informes… ¡casi cinco minutos!
Jefe: Ahora mismo llamo, ¡cinco minutos perdidos todos los días!, no puede ser…
[El jefe llama a soporte]
Jefe: Los informes tardan 10 minutos (si exagero un poco seguro que me hacen más caso, piensa, no sin razón…
Soporte: Ahora mismo los escalamos… (si ha llamado el Jefe y dice que es tan grave lo será ¿no?)
Como yo ya se que los usuarios no siempre dicen la verdad, trato de objetivar la información. Así que sin más, cojo una traza con el profiler de Sql Server y trazo todas las consultas que tarden más de tres minutos y que veo… que no hay consulta alguna que tarde más de tres minutos, así que difícil será que algún informe tarde cinco minutos… es más, tras bajar el tiempo de filtrado, no veo la consulta que el informe lanza por ningún lado. Sospechoso… a lo mejor el informe no se lanza con tanta frecuencia como el usuario dice… miro los logs de la aplicación y parece que el informe en cuestión ¡solo se lanza a final de cada mes!.
Ejecuto el informe, y el profiler no miente, dos minutos de consulta. Algo normal para el volumen de información consultado. Lanzo el informe de nuevo, cronometro en mano y tres minutos hasta que lo tengo en pantalla. Correcto.
Al final la cosa se enmaraña, como no, lo que sea para no bajarnos del burro… así que ahí estoy yo en el cliente, con el indio…
Yo: Aupa, así que el informe tarda diez minutos… yo no veo eso en las trazas…
Indio: ¿diez minutos? No… menos, pero es lento...
Yo: ¿Cuánto crees que debería tardar el informe?
Indio: No se, unos tres minutos o así… total le saco una vez al mes.
Yo: Lanza el informe que cronometramos…
[Tres minutos después]
Yo: Tres minutos….
Indio: Pensé que era más… como solo le saco una vez al mes y el resto van más rápido…
Moralejas:
- No te fíes de lo que te cuentan solo de lo que te cuentan los profilers y los logs…
- En cuestiones de rendimiento, todo el mundo exagera.
Solo actuar en base a datos y dejar de lado percepciones y cadenas de exageraciones va a permitir que en cuestiones de rendimiento no demos palos de ciego.
¡Un saludo!