node js Таймаут

Поддержка
  • @Fox какое железо? Мб дело в нем

  • @SimpleUser Маловероятно, что у меня с @venom777 одинаковое железо. Что node js у меня и у него работает стабильно до 250 потоков, а дальше может совсем не запустится.

    Я попробовал выделить ошибку в тестовом скрипте. У вас в нём какое максимально-рабочее количество потоков?

  • UP Проблема актуальна 0_1530732709799_11c61fb6-1d46-479b-a941-b83c50a6abee-image.png

  • @venom777 Привет,у меня сейчас похожая задача нужно удалить дубликаты из списка.Я так понял твой скрипт удаляет дубликаты из списка?можешь подсказать как ты решил эту задачу?

  • @assd Тебе нужно удалить дубликаты из списка. А @venom777 искал возможность Сравнения двух словосочетаний (морфология, синтаксис, семантика...). Вот его тема с задачей. А в этой теме обсуждались уже побочные проблемы связанные с использование node js.

  • @fox Вам удалось решить эту проблему? У меня тоже при запуске в 39 потоках из 100 выскакивала ошибка

    "Таймаут во время выполнения функции на встроенном языке"
    

    В самой функции только это:

    var low = ([[THREAD_INDEX]] - 2) * 876;
    var high = ([[THREAD_INDEX]] - 2) * 1103;
    
    function randomInteger(min, max) {
        var rand = min + Math.random() * (max + 1 - min);
        rand = Math.floor(rand);
        return rand;
      }
    
    [[RND_WAIT]] = randomInteger(low, high);
    
    await (new Promise((resolve, reject) => {
        setTimeout(function(){
            resolve();
        }, [[RND_WAIT]]);
    }));
    

    В остальных 61 потоках все выполнялось нормально.

    Но это если значение таймаута в ноде выставлено на "по-умолчанию". Затем я поставил там 10 секунд, и все 100 потоков выполнились без ошибок. Теперь вернул опять на "по-умолчанию" и ошибок уже нет, все 100 потоков успешны.

  • @Fox said in node js Таймаут:

    Запуск в 258 потоков отрабатывает спокойно. А вот запуск в 259 потоков выводит все потоки в ошибку Поток завершился с сообщением "Таймаут во время выполнения функции на встроенном языке"

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

  • Тоже столкнулся с проблемой, что nodejs 18 падает и на 10 потоках

  • @Vincent_ said in node js Таймаут:

    Тоже столкнулся с проблемой, что nodejs 18 падает и на 10 потоках

    Можно и в 1 поток уронить инстанс ноды. Выполните эту строку в ноде:

    await new Promise(r => setTimeout(r, 2000000));
    

    Поток завершится ошибкой "Таймаут во время выполнения функции на встроенном языке"

  • @Fox Как в таком случае листить сервер? Вот у меня, есть код

    
    async function startBaS(idsession, uuid) {
        await BAS_FUNCTION(
            "update",
            { "idsession": idsession, "uuid": uuid }
        )
    }
    
    wss.on('connection', (ws) => {
        ws.on('message', async (data) => {
    
            console.log(data)
            if (!data) {
                return
            }
            const message = JSON.parse(data);
            console.log(message);
            if (Object.keys(message).length == 0) {
                ws.send(JSON.stringify({
                    type: 'error',
                    message: 'params not valid Object.keys(message).length == 0'
                }))
                return
            }
            const _id = message._id; // id session
            const _uuid = message.uuid; // id session
            if (!_uuid || !_id) {
                ws.send(JSON.stringify({
                    type: 'error',
                    message: 'params not valid !_uuid || !_id',
                    uuid: _uuid
                }))
                return
            }
            try {
                ws.send(JSON.stringify({ type: 'task_progress', uuid: _uuid, id_session: _id }));
                await startBaS(_id, _uuid)
    
                ws.send(JSON.stringify({ type: 'update_cancel', uuid: _uuid, id_session: _id }));
    
            } catch (e) {
                console.log(e)
                ws.send(JSON.stringify({
                    type: 'update_error',
                    message: e.message
                }))
            }
    
        });
    
    });
    
    await(new Promise(async (resolve, reject) => {
    
        while (true) {
            await new Promise(resolve => setTimeout(resolve, 1000))
        }
    }));
    

    если я не использую цикл ожидания, который указан внизу - функции баса из ноды просто не будут работать - (хотя сам сервер будет принимать запросы и отвечать на них )
    Может есть какой-то коннектор к басу или порт?

  • @Abraham В таком случае вам нужно https://github.com/CheshireCaat/bas-remote-node Тоесть логика приложения пишется в самой node и из нее запускаются нужные функции БАС