質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • Ruby

    8195questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    2170questions

  • AWS(Amazon Web Services)

    2164questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

【助けてください】AWSへの画像アップロードで異常に時間がかかる

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 208

taremimi_7

score 14

<環境>
・Ruby(2.3.3)
・Ruby on Rails(5.1.4)
・AWS Linux
・Unicorn
・Nginx
・MySQL
・SSL化(https)

<ライブラリ>
・ImageMagick(yumで6.9.10-6 Q16 x86_64導入)
-- OpenMP 無効済み
-- export MAGICK_THREAD_LIMIT="1"  追加済み
-- export OMP_NUM_THREADS="1"  追加済み

$convert --version

Version: ImageMagick 6.9.10-6 Q16 x86_64 2018-07-15 https://www.imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
License: https://www.imagemagick.org/script/license.php
Features: Cipher DPC 
Delegates (built-in): bzlib freetype jng jpeg lcms lzma png tiff xml zlib

・CarrierWave(最新)
-- リサイズ検証済み
-- s3へも同様に遅い(fog-aws使用)

・Rmagick(最新)

<関連コード>
app/uploaders/thumbnail_uploader.rb 

class ThumbnailUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  process :fix_exif_rotation
  process resize_to_fit: [400, 400]


  def fix_exif_rotation
    manipulate! do |img|
      img.auto_orient!
      img = yield(img) if block_given?
      img
    end
  end

   # 拡張子が同じでないとGIFをJPGとかにコンバートできないので、ファイル名を変更
  def filename
    super.chomp(File.extname(super)) + '.jpg' if original_filename.present?
  end

   def filename
    "#{secure_token}.#{file.extension}" if original_filename.present?
  end

  def secure_token
    media_original_filenames_var = :"@#{mounted_as}_original_filenames"

    unless model.instance_variable_get(media_original_filenames_var)
      model.instance_variable_set(media_original_filenames_var, {})
    end

    unless model.instance_variable_get(media_original_filenames_var).map{|k,v| k }.include? original_filename.to_sym
      new_value = model.instance_variable_get(media_original_filenames_var).merge({"#{original_filename}": SecureRandom.uuid})
      model.instance_variable_set(media_original_filenames_var, new_value)
    end

    model.instance_variable_get(media_original_filenames_var)[original_filename.to_sym]
  end

# jpg,jpeg,gif,pngしか受け付けない                                         
  def extension_white_list
    %w(jpg jpeg gif png)
  end

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end


画像アップロードに1枚で15秒、2枚で20秒ほどかかります。(スマホよりPCの方が若干早い気がする)
ローカル環境では1秒もかかりません。

お詳しい方、考えられる原因、または関係しているファイルを教えてください。
よろしくお願いします。

※追記
AWSは東京リージョンですが、カナダからアップロードしています。
こちらもここまで関係ありますでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • ryochin

    2018/07/15 23:25

    お使いの回線の帯域と画像の大きさからみて、本来はだいたい何秒くらいで届きそうなのでしょうか。

    キャンセル

  • taremimi_7

    2018/07/15 23:29

    コメントありがとうございます。わかりません。明らかに遅いので投稿した次第です。

    キャンセル

  • tanat

    2018/07/16 08:22

    同じ画像をSCPでアップロードしても遅くなりますか?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.33%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Ruby

    8195questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    2170questions

  • AWS(Amazon Web Services)

    2164questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。