danielnewman
@danielnewman
Front-end

Неблокирующая запись логов в БД. Практики и критерии. Что делать?

Вводные:
— Есть набор cron-задач, с интервалом в 3/5/8/10 минут в группе серверов.
— Раз в 120 минут происходит их единовременный запуск.

Но не в ошибке организации крона проблема. Проблема в логировании и уведомлении разработчиков.

Как порождается ошибка:
— Единовременный запуск скриптов чтения и записи в БД
— по взаимосвязанной группе строк
— на группе серверов с расхождением по времени

Итог:
— Лок по строкам, 5 тысяч писем через PDD яндекса без гарантии своевременной доставки, в пределах 0 - 96 часов.
— Об этом создаются почтовые уведомления для отправки.
— Тут умирает php-fpm

Кандидат на решение:
— Есть идея создавать строку в БД, если в эту минуту не происходило такой ошибки,
— Увеличивать значение поля "количетсво ошибок" при повторном вхождении ошибки в этот интерва (1 минута).
— Раз в 5-10 минут мы будем высылать таблицу-сводку ошибок.

Чую, что я близок к изобретению велосипеда, но вопрос - в другом.
Как/куда мне гарантировано писать 50/100/1000 записей INSERT/UPDATE/SELECT в секунду?
А если кластернуть?

Redis/Memcached/MongoDB? Готовые продакшен-решения всей задачи?
  • Вопрос задан
  • 708 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
рекомендую redis, у него на ключик можно поставить время жизни, также есть механизм PUB/SUB, но и все остальное прокатит, в том числе и prostgres и mysql. Также можно использовать elastisearch +logstash для хранения логов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Кандидат на решение:
— Есть идея создавать строку в БД, если в эту минуту не происходило такой ошибки,
— Увеличивать значение поля "количетсво ошибок" при повторном вхождении ошибки в этот интерва (1 минута).
— Раз в 5-10 минут мы будем высылать таблицу-сводку ошибок.

Чую, что я близок к изобретению велосипеда...


Работаю с похожим велосипедом, полет нормальный. Только не в БД считаются повторы, а в оперативке. Чтобы избежать лишнего IO.

5 тысяч писем через PDD яндекса

Это зачем? Хотите сказать, их будет кто-то читать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы