Forums

Max Database Users

There are quite a few times when I hit the limit..

2017-05-20 16:20:04,145: OperationalError: (_mysql_exceptions.OperationalError) (1226, "User 'EndenDragon' has exceeded the 'max_user_connections' resource (current value: 18)")
2017-05-20 16:20:04,913: [2017-05-20 16:20:04,891] ERROR in app: Exception on /api/query_guild [GET]
2017-05-20 16:20:04,913: Traceback (most recent call last):
2017-05-20 16:20:04,913:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
2017-05-20 16:20:04,914:     response = self.full_dispatch_request()
2017-05-20 16:20:04,914:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
2017-05-20 16:20:04,914:     rv = self.handle_user_exception(e)
2017-05-20 16:20:04,914:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
2017-05-20 16:20:04,914:     reraise(exc_type, exc_value, tb)
2017-05-20 16:20:04,915:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/flask/app.py", line 1610, in full_dispatch_request
2017-05-20 16:20:04,915:     rv = self.preprocess_request()
2017-05-20 16:20:04,915:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/flask/app.py", line 1831, in preprocess_request
2017-05-20 16:20:04,915:     rv = func()
2017-05-20 16:20:04,915:   File "/home/EndenDragon/Titan/webapp/titanembeds/app.py", line 40, in before_request
2017-05-20 16:20:04,916:     discord_api.init_discordrest()
2017-05-20 16:20:04,916:   File "/home/EndenDragon/Titan/webapp/titanembeds/discordrest.py", line 23, in init_discordrest
2017-05-20 16:20:04,916:     if not self._bucket_contains("global_limited"):
2017-05-20 16:20:04,916:   File "/home/EndenDragon/Titan/webapp/titanembeds/discordrest.py", line 35, in _bucket_contains
2017-05-20 16:20:04,916:     return ifexists_keyvalproperty(self.global_redis_prefix + key)
2017-05-20 16:20:04,916:   File "/home/EndenDragon/Titan/webapp/titanembeds/database/keyvalue_properties.py", line 45, in ifexists_keyvalproperty
2017-05-20 16:20:04,917:     return q.count() > 0
2017-05-20 16:20:04,917:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 3089, in count
2017-05-20 16:20:04,917:     return self.from_self(col).scalar()
2017-05-20 16:20:04,917:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2843, in scalar
2017-05-20 16:20:04,917:     ret = self.one()
2017-05-20 16:20:04,917:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2814, in one
2017-05-20 16:20:04,918:     ret = self.one_or_none()
2017-05-20 16:20:04,918:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2784, in one_or_none
2017-05-20 16:20:04,921:     ret = list(self)
2017-05-20 16:20:04,922:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2855, in __iter__
2017-05-20 16:20:04,923:     return self._execute_and_instances(context)
2017-05-20 16:20:04,924:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2876, in _execute_and_instances
2017-05-20 16:20:04,925:     close_with_result=True)
2017-05-20 16:20:04,926:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2885, in _get_bind_args
2017-05-20 16:20:04,930:     **kw
2017-05-20 16:20:04,931:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2867, in _connection_from_session
2017-05-20 16:20:04,931:     conn = self.session.connection(**kw)
2017-05-20 16:20:04,932:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 966, in connection
2017-05-20 16:20:04,932:     execution_options=execution_options)
2017-05-20 16:20:04,933:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 971, in _connection_for_bind
2017-05-20 16:20:04,933:     engine, execution_options)
2017-05-20 16:20:04,933:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 403, in _connection_for_bind
2017-05-20 16:20:04,933:     conn = bind.contextual_connect()
2017-05-20 16:20:04,933:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 2112, in contextual_connect
2017-05-20 16:20:04,934:     self._wrap_pool_connect(self.pool.connect, None),
2017-05-20 16:20:04,934:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 2151, in _wrap_pool_connect
2017-05-20 16:20:04,934:     e, dialect, self)
2017-05-20 16:20:04,936:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1465, in _handle_dbapi_exception_noconnection
2017-05-20 16:20:04,936:     exc_info
2017-05-20 16:20:04,937:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
2017-05-20 16:20:04,937:     reraise(type(exception), exception, tb=exc_tb, cause=cause)
2017-05-20 16:20:04,937:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 2147, in _wrap_pool_connect
2017-05-20 16:20:04,937:     return fn()
2017-05-20 16:20:04,937:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/pool.py", line 387, in connect
2017-05-20 16:20:04,938:     return _ConnectionFairy._checkout(self)
2017-05-20 16:20:04,938:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/pool.py", line 766, in _checkout
2017-05-20 16:20:04,940:     fairy = _ConnectionRecord.checkout(pool)
2017-05-20 16:20:04,940:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/pool.py", line 521, in checkout
2017-05-20 16:20:04,940:     rec.checkin()
2017-05-20 16:20:04,941:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
2017-05-20 16:20:04,941:     compat.reraise(exc_type, exc_value, exc_tb)
2017-05-20 16:20:04,941:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/pool.py", line 518, in checkout
2017-05-20 16:20:04,941:     dbapi_connection = rec.get_connection()
2017-05-20 16:20:04,942:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/pool.py", line 607, in get_connection
2017-05-20 16:20:04,942:     self.__connect()
2017-05-20 16:20:04,942:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/pool.py", line 651, in __connect
2017-05-20 16:20:04,942:     connection = pool._invoke_creator(self)
2017-05-20 16:20:04,942:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 105, in connect
2017-05-20 16:20:04,943:     return dialect.connect(*cargs, **cparams)
2017-05-20 16:20:04,943:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 393, in connect
2017-05-20 16:20:04,943:     return self.dbapi.connect(*cargs, **cparams)
2017-05-20 16:20:04,943:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
2017-05-20 16:20:04,943:     return Connection(*args, **kwargs)
2017-05-20 16:20:04,944:   File "/home/EndenDragon/.virtualenvs/titanembeds/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 193, in __init__
2017-05-20 16:20:04,944:     super(Connection, self).__init__(*args, **kwargs2)
2017-05-20 16:20:04,944: OperationalError: (_mysql_exceptions.OperationalError) (1226, "User 'EndenDragon' has exceeded the 'max_user_connections' resource (current value: 18)")

Is there a way to raise the limit? (or at least debug what is happening) Every time this happens, I get slightly annoyed. I had the pool recycle option set for my webapp (and the other program that i use to connect to the db too). I am not sure why it keeps happening

Suggest search this forum for something like 'mysql connections'.

In general, you have 3 connections per web worker. If you're running out of connections, the most likely cause is that you're using too many connections in your pool or you're not closing your connections when you're done with them. The most likely is that you are not closing connections when exceptions are raised.