Perfilador OpenObject - Analizando el rendimiento de OpenERP

982 views

Published on

Presentación del Perfilador de OpenObject (módulo profiler) en las Jornadas de OpenERP 2011 en Lugo.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
982
On SlideShare
0
From Embeds
0
Number of Embeds
318
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Perfilador OpenObject - Analizando el rendimiento de OpenERP

  1. 1. Perfilador OpenObject Analizando el rendimiento de OpenERP Borja López Soilán http://www.kami.es https://twitter.com/NeoPolusIV Jornadas de OpenERP 2011. Cámara de Comercio de Lugo.
  2. 2. Perfilador"Un perfilador es un programa que describe el rendimiento en tiempo de ejecución de otro programa ofreciendo una variedad de estadísticas" - James Roskind, Python Docs
  3. 3. Perfilador OpenObjectEs un módulo más de OpenERP● Actualmente disponible en los extra-addons de la versión 6.0: https://code.launchpad.net/~openerp-commiter/openobject-addons/extra-6.0Registra la ejecución del Servidor deOpenObject/OpenERPCada vez que el servidor atiende una peticiónactualiza un archivo de estadísticas (o imprimela información en la consola)
  4. 4. EstadísticasNúmero de llamadas de servicio (desde uncliente OpenObject) y tiempo consumidoMétodos ORM invocados desde la capa deservicio (tiempos, orígenes de las llamadas...)Información de complejidad para los métodosde servicio y de ORM (los tiempos según elnúmero de registros procesados)Uso de "browse records" en los métodos deservicio (e información de pérdidas)
  5. 5. Ejemplo
  6. 6. /------------------------------------------------------------------------------|| OpenObject Profiler Output||------------------------------------------------------------------------------||------------------------------------------------------------------------------||| Service method| ir.ui.menu.read|| Calls Time Time per call| 186 0.6144866 0.0033036|| ORM methods called (by the service method):| ir.ui.menu.read| 186 0.6038930 0.0032467| Called from (callers of the ORM method):| execute_cr@.../bin/osv/osv.py:167| 186 0.6038930 0.0032467| ir.ui.menu.search| 141 0.1454751 0.0010317| Called from (callers of the ORM method):| search@.../bin/addons/base/ir/ir_ui_menu.py:107| 141 0.1454751 0.0010317| res.users.read| 140 0.1129667 0.0008069| Called from (callers of the ORM method):| read@.../bin/addons/base/res/res_user.py:267| 140 0.1129667 0.0008069|| ORM sample call trace (for the service method):| 0.001493930: ir.ui.menu.search - search@.../base/ir/ir_ui_menu.py:107| 0.002168893: res.users.read - read@.../base/res/res_user.py:267| 0.002876043: ir.ui.menu.read - execute_cr@...bin/osv/osv.py:167|| Browse Records (used by the service method):| Created Model| 1314 ir.ui.menu|
  7. 7. | Complexity profile (records/items per service method call):| Complex. Time/item | Calls Time Time/call| 1 0.003345962 | 70 0.234217405 0.003345962| 2 0.001361489 | 1 0.002722978 0.002722978| 3 0.001032924 | 100 0.309877395 0.003098773| 8 0.000580956 | 9 0.041828870 0.004647652| 9 0.000478519 | 6 0.025840044 0.004306674||==============================================================================||| Global Browse Records (used by all the service methods)|| Created Alive Garbage Model| 1314 109 0 ir.ui.menu||==============================================================================||| Global ORM complexity log (records/items per orm method call)|| Complex. Time/item | Calls Time Time/call| res.users.read| 1 0.000814499 | 190 0.154754877 0.000814499| ir.ui.menu.read| 1 0.003299624 | 70 0.230973720 0.003299624| 2 0.001343965 | 1 0.002687931 0.002687931| 3 0.001018521 | 148 0.452223539 0.003055564| 5 0.000274610 | 2 0.002746105 0.001373052| 8 0.000576370 | 9 0.041498661 0.004610962| 9 0.000474298 | 6 0.025612115 0.004268685| 21 0.001669777 | 3 0.105195999 0.035065333| 38 0.000126301 | 3 0.014398336 0.004799445| 77 0.000353303 | 3 0.081613063 0.027204354| 78 0.000162627 | 3 0.038054943 0.012684981| ir.ui.menu.search| - - | 191 0.204602479 0.001071217|------------------------------------------------------------------------------/
  8. 8. Úsese con... El perfilador no sustituye al uso de otras herramientas:Perfiladores de Pythonhttp://docs.python.org/library/profile.htmlAnálisis de SQLhttp://pgfouine.projects.postgresql.org/Análisis de consultashttp://www.postgresql.org/docs/8.1/static/sql-explain.html

×