画像のアップロード問題

こんにちは、

この修正 FIX: automatically timeout long running image magick commands (#12670) · discourse/discourse@5deda5e · GitHub が、複数の画像アップロードを壊していると思います。3 枚の画像(それぞれ約 5〜6MB)をアップロードしようとすると、毎回このエラーが表示され、動作しません。20 秒のタイムアウトが原因ではないかと考えています。

lib/discourse.rb:93:in 'exec': PNG から JPG への変換中にエラーが発生しました。

ありがとうございます :slight_smile:

このサイトでも失敗しますか?画像のアップロードを試してみてください(子供向けの内容であることが前提です)。

ここに制限が必要です。20 秒を大きく超えることはできません。

「いいね!」 1

こんにちは、サムさん。
前回はここでも失敗したため、バグとして分類しましたが、今回はアップロードできました。私のサイトでは毎回失敗します。サイズは約 6MB/写真です。

これは少し厄介ですね。ローカルでデバッグしたいので、元の画像のどれか一つをどこかにアップロードしてダウンロードできるようにしてもらえませんか?そうすれば、さまざまな ImageMagick コマンドの実行時間をテストできます。

「タイムアウトを延長する」サイトの設定を追加することも検討できますが、この単純な PNG から JPG への変換に 10 秒以上もかかっていることには少し懸念があります。

「いいね!」 3

ありがとうございます!Mega にいくつかの画像をアップロードしました File folder on MEGA

標準的な Docker インストール環境をお使いかどうか確認いただけますでしょうか。

上記のイメージの 1 つを実際にテストしました。コンテナ内で以下の 2 つのコマンドを実行しています。

timeout -k 10.0 5 identify -format %Q image.jpg

および

timeout -k 40.0 20 convert jpeg:original.jpg -auto-orient -background white -interlace none -flatten -quality 90 jpg:/tmp/target.jpg

最初のコマンドは、私のローカル環境では割り当てられた 5 秒のうち 0.27 秒で完了しました。
2 番目のコマンドは、割り当てられた 20 秒のうち 1.3 秒で完了しました。

お使いのインストール環境と、それが動作しているサーバーの具体的なパフォーマンスについて、もう少し詳しく教えていただけますでしょうか。

「いいね!」 1

Sam、確認ありがとうございます。はい、標準的な Docker インストールです。昨日、サイト全体が非常に遅くなっていたため、サーバーをアップグレードして再構築を行いました。サーバーのアップグレードにより、現在は正常に動作しています。今すぐテストしました。Digital Ocean は約 2 ヶ月前に、Premium Intel CPU を搭載した新しいプランを導入し、以前利用していた Regular CPU は性能が低下していました。

旧サーバー :arrow_down_small:
Basic - Shared CPU 2 vCPUs 4 GB 60 GB

新サーバー :arrow_down_small:
Basic - Premium Intel Shared CPU 2 vCPUs 4 GB 60 GB

このトピックを起こして申し訳ありませんでした。20 秒で十分でした。改めてありがとうございます!:slightly_smiling_face:

「いいね!」 1

はい、ここでは正しく動作していると思います。

タイムアウトを設定しないと、リソースの少ないインスタンスが画像をアップロードするユーザーに支配される高いリスクがあります。画像のリサイズに20秒ものCPU時間を割り当てるのは過剰です。

「いいね!」 3

このトピックは15時間後に自動的に閉鎖されました。新しい返信は受け付けていません。