Ошибка достала...
-
@Viktor said in Ошибка достала...:
@Zenodrot поток чуть больше сотни жрет.
нужно проект оптимизировать чтобы ресурсы хватило, наример можно большой список загнать в память в один поток повиснет все и вся
у тебя ситуация такая, софт хават ресурсы его каканить тулза вышибает, мб оптимизаторы или еще какая хня
-
@Zenodrot софт работает в виртуалке, я так понимаю, что на нее память сразу выделяется. Или нет?
-
@Viktor said in Ошибка достала...:
@Zenodrot софт работает в виртуалке, я так понимаю, что на нее память сразу выделяется. Или нет?
да под нее выделяется, а далее в ней уже скрипт до критической точки хавает память, 600 мб от обшей это мало очень я думаю ИМХО я максимум везде допускаю 80% загружености
на виртуалки включен фаил подкачки?
-
@Zenodrot конечно включен, три ГБ, щас работает в три потока, доступен гиг 300 именно физической памяти, столько диспетчер задач именно в виртуалке кажет..
-
@Viktor said in Ошибка достала...:
@Zenodrot конечно включен, три ГБ, щас работает в три потока, доступен гиг 300 именно физической памяти, столько диспетчер задач именно в виртуалке кажет..
да тести на разных потоках, наблюдай за ресурсами, там видно уже будет в этом ли причина
Я делал как, у меня был большые данные которые подгружались в переменку, это оперативка, далее чтобы поток с этой переменкой не работал пока нет необходжимости я выгружал память занулением переменки а эти данные выкладывал на ХД и когда опять нужны были подгружал в переменку и работал с ними и т.д, так можно оптимизировать память
мб ситуевина такая - имеем данные в оперативке с ними работаем и далее еще к ним накидываем данных и так всю память отъест и софт есесно крашниться
помни что Переменная это область оперативной памятиа если грузит процик, глянь может ты лишнии операции делаешь и можно их свести на минимум и сильно разгрузить вычисления
можно один фаил дрочить в 1000 потоков теребить его удалять строки добавлять и т.д, проц есесно будет нагружаться вместе с ХД запись чтение
-
This post is deleted!
-
@Zenodrot Спасибо за инфу!
Значит, просто устанавливаешь переменную в 0, и все, память почистилась? А по завершению потока это афтаматом происходит, или нет?
-
@Viktor После завершения потока все данные переменных очищаются. Не обязательно записывать в переменную 0, что очистить память. Можно её просто удалить переменную TEST в выполнить код :
delete VAR_TEST;
Только мне это не сильно помогало.
-
@Fox почему не помогало?
-
@Viktor Прирост производительности оказался незначительным. Проект заиграл новыми красками, когда перевёл его на запросы.
-
@Fox said in Ошибка достала...:
@Viktor После завершения потока все данные переменных очищаются. Не обязательно записывать в переменную 0, что очистить память. Можно её просто удалить переменную TEST в выполнить код :
delete VAR_TEST;
Только мне это не сильно помогало.
я зануляю когда поток работает не завершаясь, выгружаю под него оперативку, а далее поток проделав операции сново берет себе данные, засчет этого оперативка освобождается для другого потока и так по цепочке
-
@Viktor да просто 0 ставим туда, ну а если тебе освобождать не в ходе выполнения, то автоматом поток разгружает озу по завершению, как сказал Лис.
-
@Zenodrot Всё зависит от объёма данных, да и вообще, логики скрипта. В том проекте у меня всё делалось через браузер и в один поток
:D
. Я только начинал осваивать BAS.
Обнулять переменную есть смысл если объём обрабатываемых данных велик. Хотя если ты данные берёшь из текстового документа, можно его читать по частям и обработать его целиком в цикле, сработает дольше, но оперативка будет тратится меньше.
-
@Viktor said in Ошибка достала...:
@Fox почему не помогало?
учитываем браузер, он грузит скрипты и т.д а если юзаем http клиент то там только запросы, ответы без скриптов, картинок и т.д без бразера в общем шустро все летает. А если без его эмуляции никак то работая с ним в потоках оптимизируй на минимум инфы в переменных, храни масивы инфы на диске периодически подгружая выгружая.
-
@Zenodrot это частично сделано
-
@Fox said in Ошибка достала...:
@Zenodrot Всё зависит от объёма данных, да и вообще, логики скрипта. В том проекте у меня всё делалось через браузер и в один поток
:D
. Я только начинал осваивать BAS.
Обнулять переменную есть смысл если объём обрабатываемых данных велик. Хотя если ты данные берёшь из текстового документа, можно его читать по частям и обработать его целиком в цикле, сработает дольше, но оперативка будет тратится меньше.я про это и говорю, если нужно обработать лям строк, не в оперативе же с ними работаем а берем с ХД по строке и в путь
например первый поток берет 1000 строк списком, делает с ним манипуляции переходит к другому действию где этот список уже ненужен, и чтобы он в переменке не торчал до того как поток закончит работу мы переменку нулим или удаляем. В этоге в процесе выполнения поток не носит с собой эти 1000 строк.
-
@Fox кста, сравнил на чистых запросах зенку и BAS делал грабер по урл, логика проекта одинакова, BAS выполняется быстрее, грабер нагружает минимум ресурсов от зенки, проц выполняет быстрее код.
-
Наблюдение: ошибка вылетает только после перезагрузки всей системы. После нескольких повторных запусков начинает долго работать.
-
@Viktor У меня есть подозрения на малое количество памяти в системе или на маленький файл подкачки. 3гб, это очень мало. Вот отладочная версия https://bablosoft.com/distr/BrowserAutomationStudioDevelopment/debug.18.7.0.zip
Запустите ее, дождитесь вылета и пришлите мне файл crashdump.dmp
-
@support щас не мучит ошибка, если появится хоть раз, тут же воспользуюсь вашим советом!