#31373: Django 3.x / uwsgi is leaking connections
-------------------------------+--------------------------------------
     Reporter:  Marcin Nowak   |                    Owner:  nobody
         Type:  Uncategorized  |                   Status:  closed
    Component:  Uncategorized  |                  Version:  3.0
     Severity:  Normal         |               Resolution:  needsinfo
     Keywords:                 |             Triage Stage:  Unreviewed
    Has patch:  0              |      Needs documentation:  0
  Needs tests:  0              |  Patch needs improvement:  0
Easy pickings:  0              |                    UI/UX:  0
-------------------------------+--------------------------------------

Comment (by Marcin Nowak):

 {{{
 createdb connmaxage
 python -m venv /tmp/env
 . /tmp/env/bin/activate
 pip install django==3.0.4
 pip install psycopg2-binary
 cd /tmp/
 unzip connmaxage.zip
 cd connmaxage
 ./manage.py runserver
 }}}

 then (on the 2nd terminal)

 {{{
 ab -c 10 -n 1000 http://127.0.0.1:8000/
 }}}

 Result:

 {{{
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 200 1
 Internal Server Error: /
 Traceback (most recent call last):
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/base/base.py", line 220, in ensure_connection
     self.connect()
   File "/tmp/env/lib/python3.8/site-packages/django/utils/asyncio.py",
 line 26, in inner
     return func(*args, **kwargs)
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/base/base.py", line 197, in connect
     self.connection = self.get_new_connection(conn_params)
   File "/tmp/env/lib/python3.8/site-packages/django/utils/asyncio.py",
 line 26, in inner
     return func(*args, **kwargs)
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/postgresql/base.py", line 185, in
 get_new_connection
     connection = Database.connect(**conn_params)
   File "/tmp/env/lib/python3.8/site-packages/psycopg2/__init__.py", line
 126, in connect
     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
 psycopg2.OperationalError: FATAL:  sorry, too many clients already


 The above exception was the direct cause of the following exception:

 Traceback (most recent call last):
   File "/tmp/env/lib/python3.8/site-
 packages/django/core/handlers/exception.py", line 34, in inner
     response = get_response(request)
   File "/tmp/env/lib/python3.8/site-
 packages/django/core/handlers/base.py", line 115, in _get_response
     response = self.process_exception_by_middleware(e, request)
   File "/tmp/env/lib/python3.8/site-
 packages/django/core/handlers/base.py", line 113, in _get_response
     response = wrapped_callback(request, *callback_args,
 **callback_kwargs)
   File "/tmp/connmaxage/connmaxage/main/views.py", line 7, in main
     return HttpResponse(str(User.objects.count()))
   File "/tmp/env/lib/python3.8/site-packages/django/db/models/manager.py",
 line 82, in manager_method
     return getattr(self.get_queryset(), name)(*args, **kwargs)
   File "/tmp/env/lib/python3.8/site-packages/django/db/models/query.py",
 line 397, in count
     return self.query.get_count(using=self.db)
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/models/sql/query.py", line 517, in get_count
     number = obj.get_aggregation(using, ['__count'])['__count']
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/models/sql/query.py", line 502, in get_aggregation
     result = compiler.execute_sql(SINGLE)
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/models/sql/compiler.py", line 1149, in execute_sql
     cursor = self.connection.cursor()
   File "/tmp/env/lib/python3.8/site-packages/django/utils/asyncio.py",
 line 26, in inner
     return func(*args, **kwargs)
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/base/base.py", line 260, in cursor
     return self._cursor()
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/base/base.py", line 236, in _cursor
     self.ensure_connection()
   File "/tmp/env/lib/python3.8/site-packages/django/utils/asyncio.py",
 line 26, in inner
     return func(*args, **kwargs)
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/base/base.py", line 220, in ensure_connection
     self.connect()
   File "/tmp/env/lib/python3.8/site-packages/django/db/utils.py", line 90,
 in __exit__
     raise dj_exc_value.with_traceback(traceback) from exc_value
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/base/base.py", line 220, in ensure_connection
     self.connect()
   File "/tmp/env/lib/python3.8/site-packages/django/utils/asyncio.py",
 line 26, in inner
     return func(*args, **kwargs)
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/base/base.py", line 197, in connect
     self.connection = self.get_new_connection(conn_params)
   File "/tmp/env/lib/python3.8/site-packages/django/utils/asyncio.py",
 line 26, in inner
     return func(*args, **kwargs)
   File "/tmp/env/lib/python3.8/site-
 packages/django/db/backends/postgresql/base.py", line 185, in
 get_new_connection
     connection = Database.connect(**conn_params)
   File "/tmp/env/lib/python3.8/site-packages/psycopg2/__init__.py", line
 126, in connect
     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
 django.db.utils.OperationalError: FATAL:  sorry, too many clients already

 [17/Mar/2020 23:20:23] "GET / HTTP/1.0" 500 166202
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31373#comment:12>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/065.9a1fc2fb87f06ab891b2a0eb368f122c%40djangoproject.com.

Reply via email to