|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
Добрый день. Есть функция, написанная на C, которая исполняет bash скрипт. Все работало нормально, пока не появилась необходимость вызывать из базы скрипт такого рода: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9.
Причем, когда дергаю udf, скрипт отрабатывает, но вот fb виснет, приходится килять процесс. Версия FB 3.0.5 релиз, система Centos 7. Есть у кого мысли в чем может быть дело? Код функции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63.
В прикрепленном файле стек потоков сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 11:41 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
24.01.2020 11:41, demon1992 пишет: > > Есть функция, написанная на C, которая исполняет bash скрипт. > убыв бы! ей бо! (С) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 11:45 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
demon1992, не надо таких UDF писать, никогда ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 12:04 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
demon1992, В cfileexists память за собой надо подчищать ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 12:19 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
Симонов Денис не надо таких UDF писать, никогда А можно узнать почему? Больше меня интересует вопрос как исправить проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 12:27 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
demon1992, Не надо использовать UDF для запуска скриптов. Это как минимум не безопасно. demon1992Больше меня интересует вопрос как исправить проблему. как обычно отладчиком. Для начала можно попробовать выполнить gate4osc в консольном приложении без сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 12:42 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
demon1992 Все работало нормально а что именно работало нормально? я не знаю, можно ли запустить ФБ на Линуксе "как приложение", т.е. как fbserver -a (или firebird -a) как на Винде. В этом случае можно понять - вдруг udf выдает что-то на экран, чего при работе службой или демоном ФБ выдать никак не может, и поэтому "виснет". Кроме того, особенно на линуксе не надо забывать про права. скрипт выполняется ИЗ процесса ФБ, чего ему в этом случае разрешено, а чего нет - х.з. А почему пишут "так не делать" - нельзя из сервера вызывать процессы, которые могут повиснуть, лезут куда-то по сетке, выполняют какие-то мутные операции, и т.д. Потому что это как раз и может привести к "сервер завис". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 14:27 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
А ещё для рабочих процессов классика stdout это привязанный сокет ЕМНИП, поэтому любой вывод из скрипта ломает протокол. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 14:30 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
Работала она, пока была написана на fp, но после перехода на ss начал падать сервак из-за многопоточного доступа. Переписали на с, любой скрипт отрабатывает, который ничего не выводит, или выводит обычный текст. А вот если вызывать в скрипте curl, то сам скрипт отрабатывает, но при этом сервер перестает отвечать. Если из терминала запустить скрипт, или даже скомпилить функцию как приложение, оно работает то все, но при этом какую-то фигню выводит, типо статистики сети или что-то типо того. Скорее всего fb и пытается показать это и не может. Как это поправить я чет не соображу никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:17 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov поэтому любой вывод из скрипта ломает протокол. А про это можно подробнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:17 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
demon1992А про это можно подробнее? Нет. Тут программист нужен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:25 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
demon1992 но после перехода на ss начал падать сервак из-за многопоточного доступа То есть, причина падения - не кривые руки, а многопоточность. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:41 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
ёёёёё demon1992 но после перехода на ss начал падать сервак из-за многопоточного доступа То есть, причина падения - не кривые руки, а многопоточность. А в том, что "из-за многопоточного доступа" начало зависать потому, что "было написано на fp", и в связи с этим пришлось переписать на c, на котором, как известно, не должно зависать "из-за многопоточного доступа", в отличие от написанного на fp. Вот такую логику увидел мой шар. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2020, 15:36 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
YuRock, видимо, на fp был очень сложный код, который на c удалось переписать только с вызовом внешнего скрипта. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2020, 16:24 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
kdv, ничего удивительного. Как только надо сделать чуть более сложное чем 2+2 люди начинают искать готовые компоненты (наследники TComponent). Это добро в UDF работает мягко говоря не очень. А на C это ещё надо уметь писать. demon1992, сарказмПопробуй на C++ переписать в виде UDR. Авось заработает ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2020, 17:08 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
Симонов Денис kdv, ничего удивительного. Как только надо сделать чуть более сложное чем 2+2 люди начинают искать готовые компоненты (наследники TComponent). Это добро в UDF работает мягко говоря не очень. А на C это ещё надо уметь писать. Не обязательно. Все могло быть банально - отсутствовала установка IsMultiThread По сабжу - если задача просто отправить json, то корректнее всего применять отдельную службу. Как компромиссный вариант - пусть и запускать скрипт, но не блокировать. Отработает и ладно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 10:49 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
demon1992 Если из терминала запустить скрипт, или даже скомпилить функцию как приложение, оно работает то все, но при этом какую-то фигню выводит, типо статистики сети или что-то типо того. Скорее всего fb и пытается показать это и не может. Как это поправить я чет не соображу никак. Тама есть ключик -s или --silent он как раз эту "какую-то фигню" отключает. Кроме того, утилита на старте читает конфиг и дефолтными параметрами. Возможно они несколько различаются при выполнении из консоли и из под FB. Ну и вообще-то popen форкает сервер. Я как-то даже теряюсь хорошо ли это для SS со всеми его общими ресурсами. Но тут только старшие товарищи помочь могут. А по хорошему - действительно такое на отдельном сервисе делать нужно. Заведи табличку и пиши тудыть команды. Сервис будет её вычитывать, команды исполнять и результаты рядом складывать. Ну, или что более навороченное, типа RabbitMQ подобных можно прикрутить. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 11:38 |
|
Зависает сервер при вызове UDF
|
|||
---|---|---|---|
#18+
Tonal, Спасибо. :) Я согласен с этим конечно, но как это обычно бывает, понаписали изначально такую логику вызова через udf, и не парился никто что это выйдет когда - то боком, вот и приходится с костылями работать. Но мне вообще интересен сам факт того, как поправить эту проблему, если это можно сделать конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 11:45 |
|
|
start [/forum/topic.php?fid=40&msg=39918492&tid=1560459]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 248ms |
0 / 0 |