оперативки есть?
физически там 64GB но еще есть mysqld
Так сколько свободной памяти-то?
Интересно, это прод? Если что, OOM killer в linux может прийти и не за твоей программой, а за другой толстой (например, СУБД). Это Linux? ulimit -a смотрели? Пробовали вместо push @массив использовать какой-нибудь $hash{ $i . '_'. $id } = 1? Т.к. в perl, как и во многих других ЯП массивы плохо работают, если делать им постоянное увеличение. А вам, судя по всему, нужно что-то вроде Set Ещё, если вас устроит потоковая обработка, можно делать что-то вроде: while(<>) { my @F = split; next unless $F[0] =~ /^\d+$/; push @id, $F[0]; if ( @id >= 1000 ) { my @i = splice(@id, 0, 1000); # do something with @i } } if ( my @i = @id ) { # do something with @i }
Обсуждают сегодня