Top Banner
Rendimiento en Tryton
19

Rendimiento del sistema Tryton

Jan 25, 2017

Download

Business

NaN-tic
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Rendimiento del sistema Tryton

Rendimiento en Tryton

Page 2: Rendimiento del sistema Tryton

1/Programación

Page 3: Rendimiento del sistema Tryton

1.1/Operaciones en batch: create()

● Listas de registros:

@classmethoddef create(cls, vlist):

pass

Page 4: Rendimiento del sistema Tryton

1.2/Operaciones en batch: create()

parties = []

for x in xrange(1000): party = Party() Party.code = random()

Party.create([x._save_values for x in parties])

o

Party.save(parties)

Page 5: Rendimiento del sistema Tryton

1.3/Operaciones en batch: save()

for party in parties:party.code = random()party.save()

for party in parties:party.code = random()

Party.save(parties)

Page 6: Rendimiento del sistema Tryton

1.4/Cache

● Pre-carga de 2000 registros (configurable)● Anti-patrón: acceso aleatorio a los datos cargados

mediante search/browse

Party = Pool().get('party.party')parties = Party.search([])for party in parties:

for address in party.addresses:pass

Page 7: Rendimiento del sistema Tryton

1.4/Adjuntos

● Problema con python a nivel de comunicación. Introducido workaround en Tryton. Muy lento para ficheros de algunos MB

● Se guardan en el sistema de ficheros

Page 8: Rendimiento del sistema Tryton

1.5/Campos funcionales

● Trabajar en batch si no se puede hacer uso de la cache:

@classmethoddef get_value(cls, names, records):

pass

def get_value(self):pass

Page 9: Rendimiento del sistema Tryton

2/Procesos

Page 10: Rendimiento del sistema Tryton

2.1/Múltiples procesos

● Reverse proxy con NGINX o bien WSGI a partir de la 4.0● Cron integrado: lanzado en un proceso independiente del

que recibe las peticiones RPC● celery_tryton● Jasper server

Page 11: Rendimiento del sistema Tryton

3/PostgreSQL

Page 12: Rendimiento del sistema Tryton

3.1/PostgreSQL

● MVCC● Isolation Level: Repeatable read – No serializable● Actualizar versiones: 9.4 vs 9.5 24s vs 18→

Page 13: Rendimiento del sistema Tryton

3.2/Fichero de configuración

● Fichero de configuración● shared_buffers● work_mem● maintenance_work_mem● asynchronous_commit● fsync ¡¡On!!→● ¿¿ huge_pages ??

Page 14: Rendimiento del sistema Tryton

4/Sistema

Page 15: Rendimiento del sistema Tryton

4.1/Soft & hard

● PyPy vs cPython● Pyhon no libera memoria una vez consumida● Un proceso python podemos esperar que consuma entre

400MB y 1GB – si excede debería ser un problema● SSD está muy bien, ¿lo necesitas?

Page 16: Rendimiento del sistema Tryton

5/Futuro

Page 17: Rendimiento del sistema Tryton

● PosgreSQL 9.6 – varios procesos para ejecutar una consulta – excelente escalabilidad hasta 4 procesos

● Mecanismo estándar para guardar binarios en el sistema de ficheros

● Desaparición de los Properties● ¿Ejecución asíncrona de consultas SQL?● ¿Utilizar C en python-sql?● Mejorar gestión de las jerarquías – Adjancency list

5.1/Futuro

Page 18: Rendimiento del sistema Tryton

http://www.NaN-tic.com

Albert Cervera i [email protected]@albertnanlinkedin.com/in/albertca

Page 19: Rendimiento del sistema Tryton