Пишу приложение на django.
Стек такой : nginx->gunicron->django->pgsql
Решил померить скорость, — создал view, который из get параметров берет id, ищет в базе объект(18 полей) по первичному ключу и создает другой обобьет (23 поля) связанный с найденным через FK
При этом получаю(wget) 0.03 сек на запрос. А это много.
Начинаю профилировать через консоль:
In [1]: import billing.views as v
In [2]: from django.test.client import RequestFactory
In [3]: v.TakeTest(RequestFactory().get(path="/taketest/?code=1&msisdn=123123")).serialize()
Out[3]: b'Content-Type: text/html; charset=utf-8\r\n\r\nOk 0.05739855766296387'
In [4]: v.TakeTest(RequestFactory().get(path="/taketest/?code=1&msisdn=4231421")).serialize()
Out[4]: b'Content-Type: text/html; charset=utf-8\r\n\r\nOk 0.008865118026733398'
Получается что та же функция, вызванная второй раз, но с другими параметрами работает быстрее.
Как мне сделать так, чтобы эту скорость я наблюдал не только в консоли?
Писание же твое принято бысть и уразумлено внятельно. (С) Иван IV
Здравствуйте, Kir., Вы писали:
K> Как мне сделать так, чтобы эту скорость я наблюдал не только в консоли?
Попробуй разделить тест на 2/4 части. В перовой не использовать базу, а подставить из заглушки заранее заданные значения (это будет производительность django, при чем на холодном и горячем кэше во второй и последующий запросы). Во второй части делать запрос в БД на холодном и горячем кэше (это будет соответствующая производительность связки django-база).
Отсюда будет более понятно куда двигаться дальше.
Управляю вселенной не привлекая внимания санитаров.
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, Kir., Вы писали:
K>> Как мне сделать так, чтобы эту скорость я наблюдал не только в консоли?
AB>Попробуй разделить тест на 2/4 части. В перовой не использовать базу, а подставить из заглушки заранее заданные значения (это будет производительность django, при чем на холодном и горячем кэше во второй и последующий запросы). Во второй части делать запрос в БД на холодном и горячем кэше (это будет соответствующая производительность связки django-база).
AB>Отсюда будет более понятно куда двигаться дальше.
Уже сделал.
Тормозит именно запрос к базе. Если из консоли вызывать, то первая вставка ~0.02, а последующие вставки ~0.002. (и это с коммитом)
А если через веб, то каждая всякая получается как первая т.е. по 0.02.
Здравствуйте, Ops, Вы писали:
Ops>Здравствуйте, Kir., Вы писали:
Ops>Еще можно pgbouncer попробовать прикрутить.
Пишут что начиная с 1.6 появилась опция CONN_MAX_AGE и pgbouncer стал ненужен
Писание же твое принято бысть и уразумлено внятельно. (С) Иван IV