6

コマンドラインからrubyスクリプトを実行しています。スクリプトはファイル(15 MB)をダウンロードし、解凍し、JSONとして解析してから、mysqldbにファイルを入力します。

実行すると、単純な「Kill​​ed」メッセージが返されます。どうしたの?どうすれば問題が何であるかを知ることができますか?

EC2マイクロインスタンスで使用しています。

ありがとう

これがスクリプトです

require 'open-uri'
require 'zlib'
require 'json'

require_relative '../db/db.rb'

dl = open('........')
ex = Zlib::GzipReader.new dl
json = JSON.parse ex.read
events = json['resultsPage']['results']['event']

puts "starting to parse #{events.count} event(s)..."
created = 0
updated = 0

events[1..10].each do |event|
    performances = event['performance']
    performances.each do  |performance|
        ar_show = Show.find_or_initialize_by_songkick_id performance['id']
        ar_show.artist_name = performance['displayName']
        ar_show.new_record? ? created += 1 : updated += 1
        ar_show.save!
    end
end

Import.create :updated => updated, :new => created
puts "complete. new: #{created}   -   updated: #{updated}"
4

1 に答える 1

5

マイクロ インスタンスには利用可能なメモリまたはスワップ領域があまりないため、ほぼ確実にメモリが不足しています。これは Perl プログラムで発生しました。動的言語は、大量のデータを処理するときに大量のメモリを使用する可能性があります。

この理論をテストする最善の方法は、小規模または大規模なインスタンスを 1 時間以内にスピンアップして (そのため、あまりお金を払わなくてもよいように)、そこでスクリプトを試すことです。実行される場合は、マイクロ インスタンスがプログラムを実行するには小さすぎることがわかります。

于 2012-12-21T15:13:54.303 に答える