Fred,

I observe this behavior using uwsgi + nginx. Per your suggesting I tried a 
CONN_MAX_AGE = 2, which seems to have the same qualitative behavior as 
CONN_MAX_AGE = None (i.e. the error message does not appear in the log 
after repeatedly refreshing the browser on the admin page). 

I don't understand why a CONN_MAX_AGE = 0 would yield qualitatively 
different behavior than CONN_MAX_AGE = 2.

Many thanks,
Mike



On Tuesday, January 17, 2017 at 2:59:21 PM UTC-5, Fred Stluka wrote:
>
> Mike,
>
> As of version 1.6, Django supports persistent DB connections
> (connection pooling).  CONN_MAX_AGE specifies the number of
> seconds that a connection will remain open and be reused.
> You can set it to 0 to cause each DB interaction to open, use,
> and close its own connection.  You can set it to None to allow
> an unlimited number of connections.  See:
> - https://docs.djangoproject.com/en/dev/ref/databases/
>
> However, the behavior you're seeing doesn't seem to match this 
> documented behavior.  I'd have expected CONN_MAX_AGE = 0
> to prevent connections from being reused, so they should be 
> closed at the end of the request that used them.  So, unless you
> have 65 or more concurrent requests, you should not be hitting
> your limit.  
>
> I'm not surprised that CONN_MAX_AGE = None has an effect, but 
> I wouldn't have been able to predict whether it makes things 
> better or worse.  It allows Django to reuse connections so fewer
> of them should be created, but it also allows Django to pool them 
> for as long as it likes, so a large number of them may accumulate.
>
> Have you tried any other values for CONN_MAX_AGE, like 1 or 2?
>
> Also, are you using the Django development server?  The docs
> linked above say:
>     "The development server creates a new thread for each request 
>      it handles, negating the effect of persistent connections. 
>      Don’t enable them during development."
>
> --Fred 
> ------------------------------
> Fred Stluka -- mailt...@bristle.com <javascript:> -- 
> http://bristle.com/~fred/ 
> Bristle Software, Inc -- http://bristle.com -- Glad to be of service! 
> Open Source: Without walls and fences, we need no Windows or Gates. 
> ------------------------------
>
> On 1/17/17 2:25 PM, Michael Grundler wrote:
>
> When Django closes a database connection at the end of a request/response 
> cycle does that connection still maintain its hold on the database?
>
>
> I ask because I am running an app on a spatialite (v4.3.0a) database, 
> which, due to a limitation in the GEOS library (v3.6.1-CAPI-1.10.1 r0), can 
> only accept a maximum of 64 connections. When I configure Django so that 
> CONN_MAX_AGE = 0, the server log will eventually begin filling up with 
> messages that read "ERROR: Too many connections: max 64". If I enable 
> persistent connections by setting CONN_MAX_AGE = None, these messages 
> disappear. To me this suggests that when Django closes a connection at the 
> end of a request/response cycle that connection persists from spatialite's 
> perspective.
>
>
> Is this expected behavior?
>
>
> The error message is easily reproduced by starting a project configured to 
> use spatialite, logging into the admin page, and then refreshing your 
> browser repeatedly until 64 requests have been made.
>
>
> Thanks for any insights,
>
> Mike
>
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to django-users...@googlegroups.com <javascript:>.
> To post to this group, send email to django...@googlegroups.com 
> <javascript:>.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/8b2d88c4-056c-4eeb-9dc9-7295f7ff0961%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/django-users/8b2d88c4-056c-4eeb-9dc9-7295f7ff0961%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/5e49730b-8e58-4d26-aedc-0228717eefa6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to