python - Django slowdown - thousands of unused datababase calls -
i have weird issue database consisting of 27,000 items in main table, , ~400,000 items in many-to-many linking items. database postgresql, running psycopg2, on django server on mod_wsgi on apache2.
this particular view slows down 10-20 seconds render.
i having hard time finding slowdown coming from. simple logging tells me view taking less 75 ms render, it's not view logic or templates. , sql queries being executed view take 35 ms total. there several seconds of operations can't see happening.
profiling tells me this:
ncalls tottime percall cumtime percall filename:lineno(function) 5597 3.750 0.001 3.820 0.001 /usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py:52(execute) 303114/66508 2.518 0.000 5.290 0.000 /usr/lib/python2.7/copy.py:145(deepcopy) 297634 0.762 0.000 0.762 0.000 /usr/lib/python2.7/copy.py:267(_keep_alive) 16627 0.622 0.000 6.145 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py:242(clone) 44159/22079 0.449 0.000 2.531 0.000 /usr/lib/python2.7/copy.py:234(_deepcopy_tuple) 5597 0.423 0.000 4.653 0.001 /usr/local/lib/python2.7/dist-packages/django/db/backends/util.py:37(execute) 38706/33254 0.374 0.000 2.970 0.000 /usr/local/lib/python2.7/dist-packages/django/utils/tree.py:55(__deepcopy__) 10961 0.367 0.000 0.599 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/base.py:326(__init__) 16558 0.322 0.000 8.946 0.001 /usr/local/lib/python2.7/dist-packages/django/db/models/query.py:241(iterator) 5597 0.293 0.000 2.071 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py:56(as_sql) 5602 0.266 0.000 0.983 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py:1035(add_filter) 5597 0.232 0.000 0.540 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py:242(get_default_columns) 94039/83135 0.221 0.000 1.783 0.000 /usr/lib/python2.7/copy.py:226(_deepcopy_list) 44448 0.216 0.000 0.216 0.000 /usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py:121(__init__) 22209 0.207 0.000 0.207 0.000 /usr/lib/python2.7/encodings/utf_8.py:15(decode) 22080 0.199 0.000 1.550 0.000 /usr/lib/python2.7/copy.py:306(_reconstruct) 5723 0.198 0.000 15.201 0.003 /usr/local/lib/python2.7/dist-packages/django/db/models/fields/related.py:367(__get__) 5597 0.194 0.000 0.323 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py:104(__init__) 16627 0.179 0.000 6.396 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/query.py:904(_clone) 66702 0.174 0.000 0.174 0.000 /usr/local/lib/python2.7/dist-packages/django/utils/tree.py:18(__init__) 5597 0.162 0.000 0.787 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py:162(get_columns) 5597 0.161 0.000 0.302 0.000 /usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py:160(_cursor) 44448 0.159 0.000 0.159 0.000 /usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py:116(__new__) 11182 0.149 0.000 0.304 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py:854() 16627 0.145 0.000 0.315 0.000 /usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py:136(__deepcopy__) 40271 0.140 0.000 0.209 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py:40(quote_name_unless_alias) 16558 0.131 0.000 7.713 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py:763(results_iter) 34669 0.129 0.000 0.129 0.000 /usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/operations.py:71(quote_name) 16796/11194 0.128 0.000 0.689 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/where.py:76(as_sql) 22224 0.123 0.000 0.446 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/query.py:36(__init__) 1 0.115 0.115 0.115 0.115 /usr/local/lib/python2.7/dist-packages/psycopg2/__init__.py:119(connect) 5437 0.112 0.000 14.141 0.003 /usr/local/lib/python2.7/dist-packages/django/db/models/query.py:374(get) 5598 0.111 0.000 1.232 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py:1235(add_q) 1 0.109 0.109 0.109 0.109 /usr/local/lib/python2.7/dist-packages/django/template/loaders/filesystem.py:33(load_template_source) 5602 0.108 0.000 0.561 0.000 /usr/local/lib/python2.7/dist-packages/django/db/models/sql/where.py:148(make_atom) so looks there thousands of calls being done base.py, , deepcopy, when @ connection.queries value view, there 7 total, , totalling 35 ms.
has run issue before? there no loops in view code, it's normal heuristics, pk-based lookup, , saving.
Comments
Post a Comment