Более 100 потоков BAS задыхается.



  • Господа, имеем обычную задачу get запрос на ip адрес, получаем контент, регуляркой забираем значение, выводим в лог, при 100-200 потоках вроде идет нормально, пробывал увеличивать потоки до 500 -1000 bas начинает зависать и сильно тормозить приходиться выбивать его через закрытие процесса, так как его окно повисает намертво при этом процессор, диск, память и канал заняты не выше 30 %, в чем проблема?



  • Ну это нормально, пк может слабый, схема тяжелая, ответ от сервера слишком долгий и.т.д



  • Ну так а ты что хотел, либа используй запросы, либа сервак нужен мощьнее. иначе не как



  • @Eva Он же написал, что get запросы использует ))



  • @BabloUser Бывает, что 100 потоков работают эффективней и быстрей, чем 1000. Можешь попробовать не выводить в лог. Заметил, что когда большой объем в лог идет бас подвисает



  • @Denis_krsk да заметил, запись в лог пишется же в фаил, там нагрузка на хард,
    к слову, дело не в серваке, железо топое стоит, канал гигабитный, анологичные софты на тех же запросах летаю на 1000 потоках. дело именно в басе не могу заюзать скрипты в овер много потоках, и от этого становиться грустно. Проблема глобальная, нужно рапортовать, ибо серьезные люди работа с серьезным количеством потоков. Где именно срабатывает эффект узкого горлышка, не могу выявить, поэтому и запостил сюда, может кто-то как то решал такую траблу. А сказать что нужно уходить на свой код это не дело, мне нравиться BAS по этому и рапортую. 100 потоков против 1000 они кажутся как бы быстрее выполняются это да но сравнить сторонние чекеры-мекеры сделанные школьниками на делфи бас сильно проигрывает по скорости. И это не дело господа.

    12 лямов доменов чекаю на 200 потоках 3и сутки и плачу...

    мысль всегда была как бы отключить запись в лог элементарные sucess и fail и может из за этого тупняк.



  • @BabloUser Заменяй регулярки, они кушают много ресурсов. Ещё для проверки попробуй сделать работу в 100 потоков и запустить 10 скриптов. Возможно дело в среде.



  • @BabloUser

    просто создание потока потребляет приличное количество ресурсов, если пустой скрипт ничего кроме ждания(случайное время) не даелающий в 1000 потоков еще может завершится, то 10000 потоков отедает ядро моего и5 через край и хавает 5 гигов оперативки, дальше я его прибил ибо быть беде
    upd: и не случайное врем тоже(тоже 5 гигов)



  • @Fox да, если несколько экземпляров запускать то тогда таким методом добивается результат в 1000 потоков, в совокупности. Дело в среде, пробывал на вин 7, 8 10 на серваках 2003 2012r2 все тоже самое.



  • @ruzne потребление реcурсов у меня не выходит за предел 30 % по всем ресурсам цп, ram, чтение запись харда я не пробывал до 10 к потоков мне бы 1000 всего )
    согласись это не дело скрипт по факту ничего не делает и в каком то месте потребляет ресурс я так и не понял где это узкое место у него на чем он валиться.



  • @BabloUser
    и не стоит забывать про js, каждый поток - функция(и кст не одна), каждая функция объект, объект - структурированные данные, довольно сложные, которые нужно хранить, так что про то что он ничего не делает говорить нельзя
    я думал дело в четверге
    ничего не знаю, но возможно существуют ограничения на количества соединений операционной системы например или еще чего



  • @ruzne это понятно что js но суть в том что вычислительная операция не грузит процесор что дает понять что задача успевает обрабатываться, дело точно не в четверге это возможно пятница для тех кто работает на 10 потоках они начинают с пятницы и до понедельника а моя задача тут и сейчас. Если есть ограничение на сокеты тут парень включай голову и думай еще раз почему анологичный софт, те же запросы шлет и лихо поднимает 1000 + соединений без единого пука.



  • @BabloUser
    да я думаю perl/lwp, ничего не помешало мне как запустить его из бас так и вернуть результат в зад, штаричок
    для всякого нужно выбирать правильный инструмент, я например сегодня 5 шкантов забивал в отверстия плоскогубцами, но если бы мне нужно было бы заколотить их сотню, я бы поднялся на пару этажей выше и взял киянку.



  • @ruzne может ты лютый строитель но ты невнимателен выше для тебя написано предлагать уходить с баса на код это не суть данного поста, пока тут только два адекватных ответа от FOX и Denis_krsk от тебя лишь изошла в чистом виде хуцпа про гвозди и дни недели.

    Интересно как ты прокомментируешь заявленое разработчиком на промо странице.

    "Очень быстрый и оптимизированный http клиент (до 2000 потоков)
    Увеличьте скорость ваших скриптов с помощью http-клиента."

    правильный инструмент говоришь?



  • Я делал похожий фидбек о производительности в многопотоке.

    Тебе стоит последовательно рассказать какие действия выполняются в скрипте, это то с чего нужно начать разбирать проблему.
    О логировании - это действительно грузит цп, я выключал вывод в лог и результаты, это немного помогло с зависаниями.

    Сходу могу предложить такие варианты для тестов

    • поменять время работы потока (если сейчас поток отрабатывает за 10 минут то сделать так что бы он отрабатывал за 1 минуту и наоборот);
    • разбить один скрипт с 1к потоков на 4 копии по 250 потоков.


  • Дело в оптимизации скрипта.
    Я свободно запускаю 2к потоков на запросах, и дажн с node js в каждом потоке.
    Попробуйте запускать потоки пачками, может поможет



  • @DrPrime а можешь скинуть простой любой пример на запросах который у тебя запускается и нормально отрабатывает на 2 к потоках.



  • @venom777 в самом первом комменте последовательность. У тебя не похожее у меня ресурсов с лихвой остается если на 1000 потоков выкрутить. У меня вообше нет проблем с производительностью и нехваткой ресурсов я уже тут язык пообил об этом. Трабла в том что бас ЗАВИСАЕТ на обычном GET запросе на 1000 потоках ПРИ ЭТОМ ВСЕ РЕСУРСЫ ЖЕЛЕЗА ЗАНЯТЫ МАКСИМУМ НА 30%

    "разбить один скрипт с 1к потоков на 4 копии по 250 потоков"

    пока решил свою проблему запуском несколько экземпляров одновременно по 200 потоков, но это не дело...



  • @BabloUser
    не могу отрицать что действительно среда
    это же как надо чтобы гвоздь от шканта не отличить? все же просто, гвозьди забиваются микроскопом, в крайнем случае кулькулятором.
    будет ли мое предположение верным если я представлю что данные для чека берутся из от кудато(базы данных или допустим файла)
    12 миллионов врятли поместтся в ресурсе значит это база данных и если она то встроенная раз необходимо использовать исключительно бас ну или чтение из файла, я пот например ранее пытался почитать басом файл на 30ГБ, бас у меня заканчивался вместе с оперативной памятью.
    для простоты допустим все-таки внутренняя база данных как и у меня на 200К+ записей
    и логикак опять же, допустим такая же как и у меня - из базы берется строка, чтото происходит(гет-запрос + простая регулярка или xpath), строка в базе изменяется\дописывается/перезаписывается.
    я думаю то тогда бутылковое горлышка в поиске\чтении\записи в базу.
    аргументы такие - имел по выше описаной схеме, причем данные обрабатывал в три этапа, трижды искал, трижды полуал и столько же перезаписывал, при том процесс бас 3-5% на процессор немного оперативки, совсем висит, процесс базы 25-30% процессора.
    решил уменьшить количество действий с базой данных, ну и раз это то в три раза, логика посредине усложнилось, обращений к базе данных на еденицу времени уменьшилось.
    итак: не то бы что не весит, так подвисает конечно, но загрузка всего на 100% со всех сторон, ну дак ладно там 150 браузеров. окно программы отзывчивое и вообще замечательное. подвисает как раз в тот момент когда большинство потоков переходит в такой режим что сложная логика по средине отсекается браузер не используется и происходят частые обращения к базе данных. общяя нагрузка на системе падает а окно баса вывешивается.
    вопрос как оптимизировать работу с базой данных при обработке большого количества записей, я вот понимаю что если я бы брал с базы данные большими страницами а не построчно было бы пошустрее, а как добовлять и главное модифицировать записи в больщем количестве.



  • @bablouser

    https://community.bablosoft.com/topic/949/часто-задаваемые-вопросы

    Что делать если основной интерфейс БАС подвисает?
    http://community.bablosoft.com/post/16933


Log in to reply
 

  • 5
  • 8
  • 11
  • 2
  • 79
  • 3
  • 8
  • 11