3

画像のアップロードに CarrierWave を使用しています。Rackspace Cloudfiles をストアとして使用すると、アップロードに 3 ~ 5 秒かかります (本番環境)。最初は、画像プロセッサが遅いかぎこちないか、または何かが原因だと考えていました。そこで、RMagick から Vips に切り替えました... 速度に目に見える変化はありません。

もっと情報が必要だったので、New Relic インストルメンテーションをいくつか書くことにしました。

http://github.com/tehprofessor/newrelic-carrierwave

インストルメンテーションを使用した後、New Relic は、各リクエストの大部分 (平均で 85%) が以下の中で費やされていることを報告しています。

::CarrierWave::Storage::Fog::File#store

#store メソッドが複数回呼び出されています。最初の呼び出しが遅い場合もあれば、最後の呼び出しが遅い場合もあれば、それぞれが呼び出される場合もあります。平均して、#store への最速の呼び出しは約 234 ミリ秒で完了します。

現在、5 つのバージョンを作成しています。それぞれが 10 ミリ秒未満で完了します (画像処理の場合)。ソース ファイルは 100k ~ 500k です。

つまり、Rackspace に投稿することは間違いありません。画像ライブラリとは関係ありません。

私の CarrierWave 構成

CarrierWave.configure do |config|
    config.fog_credentials = {
        :provider           => 'Rackspace',
        :rackspace_username => 'SECRET_SAUCE',
        :rackspace_api_key  => 'CHEESEBURGER',
        :rackspace_servicenet => true
    }
    config.storage = :fog
end

Rackspace に問い合わせたところ、Curl の使用が提案されました。私を助けようとしていたサポート担当者は、Curl を使用すると、クラウド ファイルが一貫して高速であることを発見しました。これは特に役に立たず、私の New Relic インスツルメンテーションが示唆するものとは対照的であることがわかりました。

また、私が使用しているコンテナーはパブリックであり、クラウド サーバー (VPS) と同じデータ センターにあります。

この時点で、なぜこれが非常に遅いのか、私はほとんど途方に暮れています。特に、サービスネットが設定されており、コンテナーとサーバーが同じデータセンターにあるためです。誰かが提案やアイデアを持っているなら、私はそれらを聞きたいです...

おそらく、私は非常にばかげたことをしたか、構成オプションを見逃したのでしょうか? どんな助けでも大歓迎です!

更新: 1 年後、これはまだ問題です。それほど悪くはありませんが、Rackspace が何かを変更したのでしょうか?

ありがとう、セベ

4

0 に答える 0