Найти - Пользователи
Полная версия: Архитектура приложения. Отказоустойчивость.
Начало » Python для новичков » Архитектура приложения. Отказоустойчивость.
1 2 3
o7412369815963
Budulianin
У меня mongodb. Там нельзя объединять несколько запросов в одну транзакцию.
можно использовать 2-х фазные комиты, есть bulk insert
Budulianin
o7412369815963
можно использовать 2-х фазные комиты, есть bulk insert
Спасибо, не знал про bulk. Я решил более простым способом.
Просто начал сохранять pid, а потом проверять, жив ли этот процесс.
И если такого в системе нет, то я понимаю, что он умер и нужно за ним почистить.
FishHook
Budulianin
Спасибо, не знал про bulk. Я решил более простым способом.
Просто начал сохранять pid, а потом проверять, жив ли этот процесс.
И если такого в системе нет, то я понимаю, что он умер и нужно за ним почистить.
А если этот pid уже успел занять другой процесс?
Budulianin
FishHook
А если этот pid уже успел занять другой процесс?
Это может случиться только в одном случае, когда осталась запись в БД и перезагрузилась ОС.
И то не факт что этот номер сразу же займут.

Так что можно считать, что это нереально.
s0rg
Budulianin
Это может случиться только в одном случае, когда осталась запись в БД и перезагрузилась ОС.
И то не факт что этот номер сразу же займут.

Так что можно считать, что это нереально.
OS - Linux или *bsd?
Budulianin
s0rg
OS - Linux или *bsd?
Linux
s0rg
емнип, как раз на Linux такая ситуация (переиспользование pid-ов) более чем возможна, в openssl специально добавляли код, учитывающий это, а недавно и в libressl на эти же грабли наступили.
Budulianin
s0rg
емнип, как раз на Linux такая ситуация (переиспользование pid-ов) более чем возможна, в openssl специально добавляли код, учитывающий это, а недавно и в libressl на эти же грабли наступили.

В любой ОС переиспользуются pidы. :) иначе никак.
В Linux всё хорошо должно быть с этим.
Принцип такой: берётся номер последнего созданного процесса и к нему добавляется 1.
Если такой номер уже занят, то эта процедура повторяется, пока не достигнут предел(2 ** 32).
После предела, счётчик обнуляется и всё по новой.

Вот статья

Там говорится, что в Linux, может возникнуть ситуация, когда дочерний pid,
будет совпадать с pidом родителя(странная ситуация, не знаю почему).
Это было потенциальной проблемой для них, т.к. у них ГСЧ завязывался на pid.
Там ещё говорится про 16 разрядный pid, но в современном Linux он
32 разрядный(может про старые версии говорили?)
s0rg
За статью - спасибо, понятно, что pid-ы не бесконечны, просто из беглово ознакомления с openssl, мне почему-то показалось, что суть была именно в быстром переиспользовании освободившегося pid-а.
Хорошо что это не так ;)
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