Deixando uma view no Django 35% mais rápida

Abrir uma conexão com o PostgreSQL não é propriamente a definição da palavra lento, mas é uma coisa que pode ser facilmente otimizada.

Se você usa o banco de dados em um servidor diferente, ou mesmo se usa localmente, abrir uma nova conexão pode demorar alguns milissegundos.

Eu uso o Opbeat para monitorar a performance do meu projeto, observando o breakdown do tempo gasto em cada camada da aplicação, dá pra observar que mesmo 27.5ms representam, na minha Home, 23% do tempo de chamada da requisição.

2015-08-15-103152_473x74_scrot

Levando isso em consideração, vale a pena dar uma olhada nas conexões persistentes de banco de dados no Django, built-in desde a versão 1.6.

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.postgresql_psycopg2',
 'NAME': 'blabla',
 'CONN_MAX_AGE': 600,
 }
}

O parâmetro CONN_MAX_AGE é configurado em segundos, sendo assim ele vai manter a conexão por 10 minutos. Ajuste e teste de acordo com o seu projeto.

Tá, mas qual o resultado disso? Vamos ver agora.

Aqui o tempo médio de chamada da Home antes de eu alterar a configuração:

2015-08-15-100434_656x74_scrot

E aqui o tempo médio depois de configurar a persistência da conexão:

2015-08-15-103017_656x73_scrot

Então é isso, 35% de ganho com uma linha no settings.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s