169 похожих чатов

У меня есть скрипт написанный на crystal, который крутится на

vm с 512mb ram, и он время от времени вылетает из-за нехватки памяти, поэтому я увеличил память до 2gb, но поведение осталось таким же, разве что увеличились промежутки между вылетами, скрипт просто забирает порционно данные из одного места и пушит их в другое. Код не использует никаких классов и переменных экземпляров, переменные в которые кладу данные - рождаются и умирают в одной и той же функции, так что утечки быть не должно, мне кажется что GC не успевает убирать лишнее, или еще что то. В общем вопрос, как это все можно продебажить, или что делают в таких кейсах ? Просто хочется стабильности. У меня на elixir +100500 таких скриптов, и нигде нет таких проблем.

2 ответов

34 просмотра

у меня помоему было похоже, в сервер добавил вызов GC.collect раз в 30 секунд, все прошло

Сергій- Автор вопроса

Вдруг кому интересно, исправил косяк, я затупил с рекурсией n+1. В общем было что то вроде этого: class Importer def start sources.each do |source| spawn { import_from(source: source) } end end private def import_from(source, progress = nil) progress ||= last_progress_for(source: source) # some code to import data from source sleep 1.minute if progress.finished import_from(source: source, progress: progress) end end и поправил на такое class Importer def start sources.each do |source| spawn do progress = last_progress_for(source: source) loop do progress = import_from(source: source, progress: progress) end end end end private def import_from(source, progress : Progress) : Progress progress ||= last_progress_for(source: source) # some code to import data from source sleep 1.minute if progress.finished progress end end

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта