#5133: Memcached connections get left open (in certain circumstances).
-----------------------------------+----------------------------------------
          Reporter:  jacob         |         Owner:  nobody   
            Status:  reopened      |     Milestone:  1.0      
         Component:  Cache system  |       Version:  SVN      
        Resolution:                |      Keywords:  memcached
             Stage:  Accepted      |     Has_patch:  1        
        Needs_docs:  0             |   Needs_tests:  0        
Needs_better_patch:  1             |  
-----------------------------------+----------------------------------------
Changes (by boo...@gmail.com):

  * status:  closed => reopened
  * resolution:  fixed =>

Comment:

 The patch takes care of connections kept open, but it introduces another
 problem - the need to open one or more tcp connections every single
 request.

 With a simple loop, you can make a system run out of sockets easily -
 after a socket is closed, that port cannot be reused for an eternity,
 ranging from 1 minute to 4 depending on OS. If enough sockets get stuck in
 TIME_WAIT state, the server simply fails to connect to memcached and start
 serving everything from db again - that's not something you want to see on
 a site with sufficient traffic to need a memcached installation.

 In my opinion, the cure is worse than the disease. There's an easy
 workaround available for the original problem: restart workers after a
 certain amount of requests. With max-request=500 on a 5 threads deamon
 process (mod_wsgi, times 20 processes), we never go over 100 connections
 on our memcached server, started with the default cap of 1024 connections.
 If you run mod_python, use MaxRequestsPerChild.


 My current solution is to just noop the whole fix with one line in any
 .py: django.core.cache.backends.memcached.CacheClass.close = lambda x:
 None. It might be an idea to make it configurable so people can choose
 between disconnect after every request and keep it open until process
 restart.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/5133#comment:16>
Django <http://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 post to this group, send email to django-updates@googlegroups.com
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to