Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Logservice (chat2mysql)
#1
написал замену logservice (основная идея была в записи логов чата в mysql базу для быстрого доступа из php)

в принципе поставленную задачу решил =) итак:

Установка:
  • создать папку под демона и распаковать туда архив (наприер в %SERVER_PATH%/logservice_db)
  • изменить файл gamesys.conf:
  • вписать данные для БД (хост, логин, пароль, имя базы)
  • изменить пути к логам на свои
  • заменить запуск стандартного логсервиса на этот (запуск должен выглядеть примерно так - cd logservice_db; ./logservice.sh start)

Косяки:
  • не реализовал threshold - порог логирования
  • тестировал только на 1.4.5 v63
  • я мог где-то накосячить

Бан-фильтры:
  • для включения фильтров установить filter_enable в 1
  • для примера два фильтра есть, думаю там всё понятно - фильтруется строка постредством regex. Если указан blacklist - берутся шаблоны из него, если указан whitelist - слова проверяются на исключения. caseless - зависит ли фильтр от регистра. ban_time - время бана в минутах.
  • если клиент закрывает маты звёздочками - в лог строка передаётся тоже со звёздочками =)

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

с помощью фильтров сделал базовую обработку чата с возможностью бана. Чуть позже проверю на сколько от этого замедлилась обработка и есть ли возможность усложнить проверку.

Требуется тест на баги и на потребление ресурсов.
Скачать
VirusTotal
Ответ
#2
щас опробуем
Ответ
#3
щас подумал.. надо в конфиг добавить название таблицы для лога =) сейчас создаётся таблица chat
Ответ
#4
Хм выглядит интересно и перспективно но я всетаки старый добрый logservice оставлю
Ответ
#5
Обновил архив. VT
Что добавил:
  • имя таблицы берётся из конфига
  • в таблицу добавил поле rolename
  • резолвится имя персонажа

Какие могут быть проблемы в связи с этим =)
1. если таблица уже создана, придётся добавить поле ручками
2. вместо имени может быть всякая лабуда >_> думаю это будет зависеть от версии сервера (надо потестить)
3. в конфиг добавил пункт db_sleep - время ожидания ответа gamedb, указывается в мс, у меня достаточно 1, если в базу пишутся айди вместо ников - попробуйте увеличить, например сделать 10 или 15 =)

Kn1fe12
Ответ
#6
немного поправил получение имени персонажа, добавил простенькую обработку фильтров - для примера в конфиге один фильтр на капс, второй на мат (который в прочем не будет работать, если клиент закрывает маты звёздочками).
PS: пока обновлял первый пост, понял где косяк в обработке whitelist =) завтра поправлю.
Ответ
#7
обновил архив.
Чуть поправил ункуинт, добавил кэширования ников\кланов (в конфиге time_reload время в минутах до обновления кэша), добавил обработку клан чата и комнат.

PS: изменён тип поля channel в таблице - вместо int(11) сделал varchar(255), если таблица уже создана, нужно изменить вручную (лень было делать проверку >.<)
Ответ
#8
Решил поставить на серв с онлайном 100+! Результат потрясный! mysql сервер слетел через полчасаBig Grin от большого кол-во запросов. Потом еле поднял( reboot неособо помог) пришлось через консоль бд чистить
Ответ
#9
=)))) круто. а логи с мускля есть? )

Добавлено через 2 часа 21 минуту
хм, у меня от 100+ одновременных запросов бд не падает (проверял спам-ботом, который шлёт аналог чат-логов). но думаю стоит добавить пул на подключения и запросы к мусклю.. завтра наверное выложу.
и хотелось бы увидеть некоторые параметры мускля (например max_connections, user_connections и т.п.)

Добавлено через 6 часов 28 минут
итак =) по результатам теста логсервис падает раньше мускля, так что мускль мне уронить не удалось =\
Ответ
#10
Нет не в этой штуке проблема была! Сбросил конфиги mysql стало норм! Действительно проблема была в max_connect там какогото хрена стояло 1 хотя я вообще их нетрогал по умолчанию вроде 15
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)