|
|
|
plperlu снять процесс
|
|||
|---|---|---|---|
|
#18+
Господа перловшики, есть фанкшн, на перле, опрашивает уеб-сервис. В норме, если сервис тормозит или плохо доступен, по таймауте http[s] отваливается через 3 минуты. Но если с сетью нелады - виснет (безответно). Процесс постгреса, её ждущий, не кладется ни pg_cancel_backend ни pg_terminate_backend. [ В случае dblink поведение такое же, но там я могу найти среди процессов postgres-а процесс, запущенный через dblink, и его положить. тогда и вызывающий очнётся.] А как быть с перлом ? как (в системе) найти процесс, который надо положить, чтобы вызвавший его postgres попустило ? это возможно ? или я бред несу ? PS как и можно ли в перле контролировать выполнение нити ? семафоры там понавставлять? таймауты свои прикрутить ? Есть примеры ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 09:55 |
|
||
|
plperlu снять процесс
|
|||
|---|---|---|---|
|
#18+
Если http опрашивается через LWP, то там есть настройка таймаута. В общем случае, можно так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 11:48 |
|
||
|
plperlu снять процесс
|
|||
|---|---|---|---|
|
#18+
DstblЕсли http опрашивается через LWP, то там есть настройка таймаута. В общем случае, можно так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. у меня было: Код: php 1. 2. потом выяснилось, что ssl-хендшейку на timeout положить с прибором. накопал где-то в интеах такую шняжку: Код: php 1. 2. 3. 4. 5. 6. 7. но, судя по всему, это не мой случай. а "будильник" порождает отдельный поток и семафоры в ём ? где это почитать? PS поставил в тесте alarm 0.001; - не порвало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 12:12 |
|
||
|
plperlu снять процесс
|
|||
|---|---|---|---|
|
#18+
perlfunc и perlipc Интервал целочисленный, поэтому 0.001 не сработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 12:33 |
|
||
|
plperlu снять процесс
|
|||
|---|---|---|---|
|
#18+
Dstbl, снкс, уже почитал забавная шняжка, одна на всех т.е. если самому рулить, без дураков, то через что-то типа Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 12:51 |
|
||
|
plperlu снять процесс
|
|||
|---|---|---|---|
|
#18+
DstblЕсли http опрашивается через LWP, то там есть настройка таймаута. В общем случае, можно так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. оказалось, что это вредный совет. надо аккуратно возвращать родной обработчик постгресу по выходу, как тут : http://search.cpan.org/~timb/DBI/DBI.pm Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. иначе приплывает (пусть и редко) Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 16:42 |
|
||
|
plperlu снять процесс
|
|||
|---|---|---|---|
|
#18+
qwwq, предыдущий рецепт тоже не спасает. как только перлом подергали SIG | POSIX::SigAction , и в том же процессе (по выходу из перла) дергаем sql к залоченной в другой сессии табличке -- приплываем к Код: sql 1. якобы питон ведёт себя прилично при возврате после работы с сигналами в sql--контекст. пичаль. кашевары е ? как таймаут в перловке без сигналов реализовать ? [или как кошерно обработчики сигналов возвертать ? чтобы пеже не падал по signal 14: Alarm clock] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 12:43 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=93&tid=1997312]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 356ms |

| 0 / 0 |
