Сервер MySQL ушел - PullRequest
       37

Сервер MySQL ушел

0 голосов
/ 23 февраля 2011

Я недавно перешел с локальной настройки web.py/apache на общий хост, и я пытаюсь соответствовать своей домашней конфигурации.Одной из проблем, которая появляется, является OperationalError "Сервер MySQL ушел".При поиске в интернете люди, которые сталкивались с этой ошибкой, обычно неактивны в течение нескольких часов.Это случается со мной между секундами.

Я подтвердил с помощью примера функции mod_wsgi application (), что на самом деле я работаю в режиме демона.Однако меня беспокоит одна проблема: если я выкладываю web.ctx.orm в журнал ошибок, он кажется новым объектом для каждого запроса.Разве мой объект сеанса sqlalchemy не должен быть одинаковым между запросами страниц?

Вот мой код на Python и часть настроек apache.Есть ли что-нибудь, что могло бы вызвать проблемы на этой новой машине, которой у меня не было раньше на моей домашней машине?

def load_sqla(handler):
    web.ctx.orm = scoped_session(sessionmaker(bind=engine))
    try:
        try:
            return handler()
        except web.HTTPError:
            web.ctx.orm.commit()
            raise
        except:
            web.ctx.orm.rollback()
            raise
    finally:
        web.ctx.orm.commit()
        # If the above alone doesn't work, uncomment
        # the following line:
        web.ctx.orm.expunge_all()

... urls and controllers ...

app = web.application(urls, globals(), autoreload=False)
app.add_processor(load_sqla)
application = app.wsgifunc()

, и вот часть моей настройки apache.

WSGIDaemonProcess app processes=1 threads=1 python-path=/home/net/
public_html/myapp
WSGIProcessGroup app
WSGIScriptAlias /myapp /home/net/public_html/myapp/managio.py
<Directory "/home/stratton/public_html/myapp">
 Options Indexes MultiViews FollowSymLinks
 AllowOverride None
 Order allow,deny
 allow from all
</Directory> 

1 Ответ

1 голос
/ 24 февраля 2011

Проверьте документы по адресу: http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess

Установка processes=1 фактически оставляет многопроцессорную работу включенной, что может быть причиной того, что вы получаете одновременный доступ к тому же соединению sql.

Также кажется, что вы используете SQLAlchemy, поэтому, возможно, попробуйте включить QueuePool или NullPool, когда вы создаете свой движок?

...