BAS nodejs многопоток



  • Периодически при использовании много потока
    потоки завершаются с ошибкой
    Поток завершился с сообщением "Таймаут во время выполнения функции на встроенном языке"

    Читал на форуме по этому вопросу и там написано что так как nodejs работает в однопоточном режиме, такая вот ошибка случается
    У меня используется nodejs для связи с базой mysql и еще для не которых вычислений без которых работа скрипта не возможна.
    Подскажите даст ли что нить переход на nodejs v 12
    Возможно стоить перевести действия для работы с базой на https://community.bablosoft.com/topic/14993/sql
    Возможны Ваши какие то варианты решения данной проблемы вплоть до того что б поднять еще 1 сервер на котором запустить веб сервер на python или том же nodejs, который будет по запросам от BAS у себя выполнять все эти запросы а в BAS уже просто возвращать полученный ответ.



  • не даст, это скрипт чего то ждет (например делает запрос к базе), но не может дождаться ответа, поэтому хоть 12 хоть 8 не поможет



  • Проблему вроде как удалось решить запустив 2 экземпляра программы по 75 потоков.
    Пока тестирую.



  • Да теперь все работает как нужно за сутки не было вылетов с ошибкой "Таймаут во время выполнения функции на встроенном языке"
    Так что кто активно использует многопоток с nodejs , более чем в 100 потоков, нужно разделять на разные экземпляры приложений.



  • @gomeapat Использую 50 потоков node.js v12, спустя 20-200 минут работы все потоки отваливаются

    "Таймаут во время выполнения функции на встроенном языке", причем возвращаясь в цикле на повтор - все равно уйдут в эту же ошибку

    Пока не хочу делать отдельно "серверную прогу" для действия
    попробую ограничить через глобальную переменную не более 5 node js одновременно, с таймаутом 10 секунд, если и это не поможет, то я тогда уже не знаю как быть)



  • а вы рассматривали вариант вывести в отдельный/ые потоки?
    а остальные будут общаться с этими потоками ноды...



  • @Teror2 надо в onApplication все нужные функции записывать в glob, а потом в потоках вызывать их, хоть 500 потоков будет работать без бубнов



  • @tet-vivi в отдельных потоках также само будет вызываться блок node

    очередь помогает (сделал не более 5 одновременных node, остальные ожидают), но это мне слабо подходит, так как и без того нагрузка на процессор не доходила 10% но зато node постоянно умирал от таймаута



  • @UserTrue записывать функции в glob

    Есть функции, они сами по себе
    Есть глобальные переменные

    У меня есть блок node js кода, он вызывается во всех потоках с разными входными параметрами

    Что значит "записывать функции в glob "?



  • @Teror2 я имел ввиду глобальные переменные nodejs global.variable =


Log in to reply