Errno :: ENOMEM: Невозможно выделить память - cat

У меня есть работа на производстве, который обрабатывает XML-файлы. Размер xml-файлов составляет около 4 КБ, а их размер - от 8 до 9 ГБ.

После обработки мы получаем файлы CSV в качестве вывода. Я've команда cat, которая объединит все файлы CSV в один файл I 'Я получаю:

Errno :: ENOMEM: Невозможно выделить память

наcat (Backtick) команда.

Ниже приведены несколько деталей:

Системная память - 4 ГБОбмен - 2 ГБРубин: 1.9.3p286

Файлы обрабатываются с использованиемnokogiri а также .saxbuilder-0.0.8

Здесь есть блок кода, который будет обрабатывать 4000 XML-файлов, а выходные данные сохраняются в формате CSV (1 на xml) (извините, яЯ не должен делиться этимполитика компании).

Ниже приведен код, который объединит выходные файлы в один файл.

Dir["#{processing_directory}/*.csv"].sort_by {|file| [file.count("/"), file]}.each {|file|
            `cat #{file} >> #{final_output_file}`
}

Мы сделали снимки потребления памяти во время обработки. Она потребляет почти всю часть памяти, но она выиграла 'не могу. Это всегда терпит неудачу наcat команда.

Я думаю, на backtick он пытается раскошелиться на новый процесс, который нене получить достаточно памяти, поэтому он терпит неудачу.

Пожалуйста, дайте мне знать ваше мнение и альтернативу этому.

Ответы на вопрос(3)

Ваш ответ на вопрос