我在AWS EC2大型实例上有一个<20MB pdf文件的目录(每个pdf代表一个广告).我正在尝试使用ruby和DM-Paperclip将每个pdf文件上传到S3.
大多数文件上传成功,但有些文件似乎需要数小时才能将CPU挂起100%.我通过在相关部分中打印调试语句找到了导致问题的代码行.
# Takes an array of pdf file paths and uploads each to S3 using dm-paperclip
def save_pdfs(pdfs_files)
pdf_files.each do |path|
pdf = File.open(path)
ad = Ad.new
ad.pdf.assign(pdf) # <= Last debug statment is printed before this line
begin
ad.save
rescue => e
# log error
ensure
pdf.close
end
end
Run Code Online (Sandbox Code Playgroud)
为了帮助解决问题,我将过程固定在100%的过程中.结果是数十万行像这样:
...
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
... 500K lines
Run Code Online (Sandbox Code Playgroud)
接下来几千:
...
brk(0x1224d0000) = …Run Code Online (Sandbox Code Playgroud)