Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2008 12:11:31

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

приостановка и прерывание потоков извне

ыыы… чет все посты сегодня однотипные у меня…. Event.wait()



Офлайн

#2 Окт. 23, 2008 15:54:15

DarkAnthey
От:
Зарегистрирован: 2008-07-22
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

приостановка и прерывание потоков извне

В моей проблеме ето не вариант (
Нада было сразу оговорить. Просто есть ситуация когда может повиснуть тред. а вернее сокет внутри треда.
Обработать ексепшн внутри треда не получиться потому что запрос к базе ждет ^C from pgsql. И ждать его может очень долго. Так как баз несколько и запросы проходят паралельно то отследить повисший тред трудновато. Можно повесить таймер на тред с запросом. Но даже после его срабатывания тред остаеться. Тред и connection к root master DB которая следит за тем какой запрос на какую подбазу попадет. В общем ето крайне не позитивно (



Офлайн

#3 Окт. 23, 2008 19:57:58

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

приостановка и прерывание потоков извне

А что такой за сокет, которому нельзя задать таймаут?



Отредактировано (Окт. 23, 2008 19:58:27)

Офлайн

#4 Окт. 23, 2008 20:19:41

DarkAnthey
От:
Зарегистрирован: 2008-07-22
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

приостановка и прерывание потоков извне

Когда работаеш с PlProxy в Postgres если во время работы одна из баз вышла из стоя. То весь запрос подвисает. Он ждет ^C from pgsql. C умершей базы и ждет его долго.
Те подвисает сам запрос от PlProxy. Mainteiner Skype придумал приблуду для останова етого процесса. Но она еще стремная. В общем пока не вариант.
У меня все запросы к БД тредовые. Если системе не хватает коннекта к БД то она дабавляет коннекты по ходу работы. Теперь когда запрос подвис начинаются создаваться новые коннекты которые тоже начинают висеть. Что приводит к полному останову системы.



Офлайн

#5 Окт. 25, 2008 14:02:14

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

приостановка и прерывание потоков извне

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

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



Офлайн

#6 Окт. 26, 2008 19:35:42

DarkAnthey
От:
Зарегистрирован: 2008-07-22
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

приостановка и прерывание потоков извне

Она и так не дает создать не больше определенного количества коннектов. Как ты остановиш тред котторый повис на запросе, сам в себе по тайм ауту или без него. Заменить не получиться, аналогов не много. А вернее один dblink но он тоже идет лесом. Потому что плохо выдерживает адскую нагрузу. Через lsof останавливать процесс с либой тоже не хочеться. Хотя думаю как выход есть только модификация самой либы. Но тоже так не хочеться туда лезть :(



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version