Помощь Нагрузка БД при регистрации пользователей

Тема в разделе "DLE", создана пользователем method, 17 апр 2009.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. method

    method

    Регистр.:
    8 июл 2007
    Сообщения:
    559
    Симпатии:
    133
    Вообщем случилась вчера беда - хостер отрубил доступ к БД. Прислали письмо :
    Мы были вынуждены заблокировать базу данных mybase_1 из-за нагрузки, которую она создавала на MySQL сервер.

    Запрос, который приводил к перегрузке:

    use mybase_1;
    SELECT name FROM dle_users WHERE LOWER(name) REGEXP '[[:<:]][s5][eЕ╦][rЦ][eЕ╦][gД][aЮ][l1i!][[:>:]]' OR name = 'seregal';
    dle 7.5 модули редиректа, причина удаления комента, радио.
    насколько я понял, это балуется файл engine\ajax\registration.php сравнивая, есть ли данное имя в базе. База зарегеных пользователей большая , вот и нагрузка.
    Возможно так же бот пытается перебирать логинами, если так, что можно сделать, что б предотвратить .
    Пока тупо отключил регу, но это вообще не выход.
    1 ) Так ли это, или я неправильно понял причину нагрузки, или что то другое. Если другое, то как с этим боротся?
    2 ) Если же это бот, что посоветуете ?
    3 ) Если просто большая база юзеров, каким запросом удалить юзверей. которые не заходили ранее такой то даты (ждать дле 8 прошу не советывать;) ) . Опция такая есть, но каким образом и когда она начнет чистить базу - хз.
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.034
    1) Оптимизируй БД
    2) Проудаляй всех "лишних" юзеров

    При реге запросы сильные идут... Да и запросов прилично может быть...
     
  3. method

    method

    Регистр.:
    8 июл 2007
    Сообщения:
    559
    Симпатии:
    133
    Оптимизировал. Как удалить, я ж и спрашиваю, каким запросом в май админ это сделать (удалить всех неактивных с такой то даты). Внутренними возможностями скрипта пока это очень затруднительно, только в 8 обещают массовые удаления.
     
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.034
    method, запросом сложно...

    DELETE FROM ***_user WHERE lastdate=''
    Впиши дату в ввиде времени эры никсов...
    *** замени на префикс...

    Должно удалить всех, кто не заходил с lastdate

    Добавлено через 3 минуты
    Не уверен, что прокатит, но можно так сделать:

    DELETE FROM ***_user WHERE lastdate='' AND comm_num='0'

    Удалит только если комментов нет... Но не помню, работает ли оператор AND в DALATE...
     
  5. gelios

    gelios

    Регистр.:
    2 сен 2007
    Сообщения:
    181
    Симпатии:
    223
    У меня было подобное с новостями. Было из слишком много непроверенных. Ну и с пользователями я так понял так же. Отфильтруйте в пхп май админ по дате или другим параметрам и удаляйте там. Это конечно кропотливое занятие но это того стоит. Я например так удалял 70000 новостей.
    Да и оптимизируйте базу. Удалите все что ненадо и не используется. Если есть левые таблици и не использующиеся в этой базе тоже удаляйте. К томуже в пхпмайадмин есть функция помоему оптимизации базы. Попробуйте пока так
     
  6. dm_mb

    dm_mb

    Регистр.:
    6 июн 2006
    Сообщения:
    610
    Симпатии:
    122
    вообще в настройках движка есть функция удалять юзеров которые неактивны сколько укажешь дней.
     
    Горбушка нравится это.
  7. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.034
    Сейчас подумал - я сморозил тупой запрос... Ты удалим не всех, у кого посещение раньше, а только у тех, у кого равно...

    Скорее всего, нужно юзать либо phpMyAdmin, либо надеяться на стандартную функцию...
     
  8. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    439
    Симпатии:
    96
    Не братва ... я просто в шоке чего вы тут намудрили ....

    Решение:
    PHP:
    $thisdate $_TIME - (5*3600*24); // вместо 5 - сколько дней
    $db->query("DELETE FROM " USERPREFIX "_users WHERE lastdate < '$thisdate' and user_group = '4'");
    Снесёт всю живность из группы 4, которая небыла на сайте 5 дней, все значения можно менять.
     
    Горбушка и gadiks нравится это.
  9. pilot233

    pilot233

    Регистр.:
    24 июн 2006
    Сообщения:
    405
    Симпатии:
    88
    Народ вы что велосипед изобретаете зайди в админку и поставь на пример не посещавшие более 2 мес или 3 мес как тебе нужно и двиг сам прекрасно с этим справляется. У тебя пол базы мервых регистраций вот и мочи их!
     
    Горбушка нравится это.
  10. method

    method

    Регистр.:
    8 июл 2007
    Сообщения:
    559
    Симпатии:
    133
    я ж написал, опция есть , я о ней знаю, но как быстро она удаляет и когда это делает, непонятно, а надо было срочно :)
    Мой хостер потерпел, все неактивные почистились стандартной опцией, но мускуль запроса так и не узнал ;).
    Все равно всем спасибо, тему можно закрывать.

    Если кто то успеет до закрытия:
    Прошу тех, кто шарит в мускле, написать запрос, как удалить через май админ всех пользователей, которые не акторизировались на сайте до такого то числа (неактивные) и принаждежащие такой то групе.
    Пусть народ знает, как это сделать быстро....
     
Статус темы:
Закрыта.