Найти - Пользователи
Полная версия: Почему возникает ошибка "too many connections"
Начало » Django » Почему возникает ошибка "too many connections"
1 2
barabansheg
Слишком много запросов к бд? Значит проблема в коде? Разные страницы сайта выдают такое переодически. Куда копать?
Для работы с бд юзаю джанговский orm
fata1ex
Поменяйте max_connections или что-то в этом роде в конфиге mysql.
barabansheg
К сожалению, сайт на хостинге, доступа к конфигам БД нет =(
Потрясу хостеров.
FlaPy
обычно эта ошибка возникает когда забываем закрывать соединения и открываем новые.

Если выполнить SQL запрос:
 SHOW variables LIKE "max_connections";
то можно увидеть доступное количество соединений. Попытаться изменить это значение, например на 150, можно выполнив запрос :
SET global max_connections = 150;
Но эти значения будут сброшены в default при перезапуске сервера MySQL

barabansheg
Хостеры написали, что ближе к ночи (как раз, когда я работаю над сайтом), они перезапускают сервер. Иногда выдает 504 ошибку, но чаще - too many connections. Если проблема в том, что не закрываю соединения, то как их закрывать используя orm джанговский?
fata1ex
ORM стоит выше уровня закрывания соединений. Покажите проблемное место в коде, когда возникают ошибки. Если непонятно, где это происходит, самое время подружиться с логгированием.
barabansheg
На разных страницах. Есть где два или три запроса, а есть где и один. Покурю логгирование на днях)
fata1ex
Интересно. А что за запросы такие покажите?
barabansheg
Вот например, при работе с этой вьюхой бывает:
@is_teacher
def list_pages(request):
    if request.method == 'POST':
        post_pages = request.POST.getlist('pages[]')
        if request.POST['action'] == u'delete':
            for page_id in post_pages:
                p = Page.objects.get(id=int(page_id))
                p.delete()
                
    user = User.objects.get(id=request.session['user'])                   
    menu = Menu.objects.get(owner = user)
    if len(menu.items) < 1:
        pages = Page.objects.filter(user=user)
    else:
        pages = 0
    return render_to_response('list_pages.html', locals(), context_instance=RequestContext(request))
Даже если POST запрос в неё не посылаю, все равно иногда выдает ошибку эту
reclosedev
А post_pages - большой список?
Может тогда:
Page.objects.fiter(id__in=map(int, post_pages)).delete()
И может user'a проще вот так:
user = request.user

Еще
len(menu.items)
смущает. items - это что?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB