Сведения о вопросе

GANGST1ER

03:34, 19th August, 2020

Хранение логов пользователей?

Просмотров: 406   Ответов: 7

Пожалуйста, поделитесь идеями как лучше хранить логи посещений / действий пользователей. Будет быстрее писать в БД, хранить в отдельных файлах и потом писать в БД, когда сервер не нагружен.



  Сведения об ответе

ЯЯ__4

17:25, 4th August, 2020

старые добрые текстовые файлы + logrotate, не? Прослойка в виде БД только лишний оверхед создаст.


  Сведения об ответе

appple

19:41, 3rd August, 2020

будет быстрее хранить в мемкеше/хкеше или чем-то таком и пачками выгружать в базу / файлы


  Сведения об ответе

screen

20:36, 17th August, 2020

Надежнее хранить классические логи — любые сбои в системе обработки статистики не приведут к потере данных. Однако это относится к системам, где статистика не нужна немедленно, и где данных из HTTP запроса достаточно — не нужны данные из сессии или БД и пр.
Например с помощью nginx можно тонко настроить что и как логгировать, и такие логи можно загрузить например в PostgreSQL одной командой copy


  Сведения об ответе

screen

08:07, 17th August, 2020

Если не нужно часто «читать» логи то текстовые файлы — лучшее решение.


  Сведения об ответе

DO__IT

08:14, 23rd August, 2020

Будет быстрее писать в БД, хранить в отдельных файлах и потом писать в БД, когда сервер не нагружен.
На мой взгляд — если есть хотя бы минимальная вероятность того, что ваш сервис будет интересен БОЛЬШОМУ числу пользователей на уровне архитектуры сразу принять решение, чтобы эти ЛОГИ были на отдельном сервере(серверах)…


  Сведения об ответе

SEEYOU

03:22, 21st August, 2020

Вопрос неоднозначный. Лучше тестируйте и то и другое.

Вот вы знаете, что если достаточно крупными блоками и достаточно много параллельных скриптов будут писать в файл, то сообщения могут перемешаться?
тут возникает необходимость синхронизировать доступ к файлу, а значит возникает узкое место, где все параллельные процессы блокируются.
Тогда как в CУБД уже есть некоторые интересные и бесплатно доступные механизмы типа INSERT IGNORE, которые возвращают результат «мгновенно».
Prepared statements и пул соединений тоже будут не лишними.

Еще есть мнение, что по-настоящему нагруженному проекту логи действий пользователей вообще не нужны. Разве что во время отладки.


  Сведения об ответе

lesha

21:36, 22nd August, 2020

Scribe (http://github.com/facebook/scribe) — довольно гибко, быстро, просто, аггрегация с нескольких серверов при необходимости, возможная интеграция с hadoop


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться