I'm experiencing an annoying problem with a couple of django apps. Both apps are games built on Django that make regular calls to the db using python-db. We have error emails turned on, and every so often (the interval doesn't seem to follow a pattern but it's usually no more than once in a half-hour) we get an email with the following info (I've obscured/changed some identifying info, for the record):
OperationalError at /analytics/ (2003, "Can't connect to MySQL server on 'x.x.x.x' (111)") Request Method: POST Request URL: http://hostname.domain/analytics<http://rubyskies.eastsidegamestudio.com/analytics/> Django Version: 1.3 Exception Type: OperationalError Exception Value: (2003, "Can't connect to MySQL server on 'x.x.x.x' (111)") Exception Location: /usr/lib/pymodules/python2.6/MySQLdb/connections.py in __init__, line 170 Python Executable: /usr/sbin/uwsgi-1.2.3 Python Version: 2.6.5 Python Path: ['app_path', '.', '', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6', '/usr/local/lib/python2.6/dist-packages', '/usr/local/lib/python2.6/dist-packages/newrelic-1.5.0.103', 'app_path/src', 'app_path/src/expedition', 'app_path/src/expedition/settings'] Server time: Thu, 25 Oct 2012 14:14:08 -0700 Traceback - /usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py in get_response 1. response = callback(request, *callback_args, **callback_kwargs) Local Vars Variable Value exceptions <module 'django.core.exceptions' from '/usr/local/lib/python2.6/dist-packages/django/core/exceptions.pyc'> e OperationalError(2003, "Can't connect to MySQL server on 'x.x.x.x' (111)") callback_args () receivers [(<function _rollback_on_exception at 0x1f9a578>, None)] middleware_method <newrelic.api.object_wrapper.ObjectWrapper object at 0x1fe0350> self <django.core.handlers.wsgi.WSGIHandler object at 0x1d6c810> settings <django.conf.LazySettings object at 0x1abded0> request <WSGIRequest GET:<QueryDict: {}>, POST:<could not parse>, COOKIES:{}, META:{'CONTENT_LENGTH': '275', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'DOCUMENT_ROOT': '/opt/nginx-1.2.1/html', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate', 'HTTP_ACCEPT_LANGUAGE': 'en-us', 'HTTP_CONTENT_LENGTH': '275', 'HTTP_CONTENT_TYPE': 'application/x-www-form-urlencoded', 'HTTP_HOST': 'hostname.domain', 'HTTP_USER_AGENT': 'HTTPagent/1.2 CFNetwork/609 Darwin/13.0.0', 'HTTP_VIA': 'HTTP/1.1 akrmspsrvz4ts212.wnsnet.attws.com', 'HTTP_X_FORWARDED_FOR': 'x.x.x.x, x.x.x.x', 'HTTP_X_REAL_IP': 'x.x.x.x', 'PATH_INFO': u'/analytics/', 'QUERY_STRING': '', 'REMOTE_ADDR': 'x.x.x.x', 'REMOTE_PORT': '49328', 'REQUEST_METHOD': 'POST', 'REQUEST_URI': '/analytics/', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'hostname.domain', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'uwsgi.core': 15, 'uwsgi.node': 'hostname', 'uwsgi.version': '1.2.3', 'wsgi.errors': <open file 'wsgi_errors', mode 'w' at 0x1b9e420>, 'wsgi.file_wrapper': <built-in function uwsgi_sendfile>, 'wsgi.input': <newrelic.api.web_transaction.WSGIInputWrapper object at 0x309b5d0>, 'wsgi.multiprocess': True, 'wsgi.multithread': True, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> callback <newrelic.api.object_wrapper.ObjectWrapper object at 0x7fc0c825ed10> resolver <RegexURLResolver expedition.urls (None:None) ^/> urlresolvers <module 'django.core.urlresolvers' from '/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.pyc'> callback_kwargs {} response None urlconf 'expedition.urls' - /usr/local/lib/python2.6/dist-packages/newrelic-1.5.0.103/newrelic/api/object_wrapper.pyin __call__ 1. self._nr_instance, args, kwargs) The db connection works fine most of the time, it just seems like intermittently it can't connect. I've done a couple of things, like enabled tcp_tw_reuse (it seems I usually have about 150-200 connections to mysql in TIME_WAIT on any one web server), checked the mysql server and web servers message logs for too many connections errors, and looked at the mysql log to see if there's any info there. I also wrote a script that connects to the db and sends an email to me if it doesn't get expected info, initially I ran it with a cron job and didn't get any emails from it, but obviously that was only every minute. I'm now running it every second using the watch command but haven't so far had any emails. It's very strange, and I'm not sure why it's happening. As I said, we have another django app (on completely separate infrastructure) that has the same issue. I don't believe there's a network issue but I wouldn't rule it out, but I'm curious if anyone else on here has seen this behaviour before, and if so, I'd like to know how you fixed it. Any help would be appreciated. Thanks, Guy -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/QRBTXR2Kc5cJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.