Open mitsu30 opened 1 year ago
上記ChatGPTに投げてみました。以下共有になります。
SystemStackError (stack level too deep)エラーが発生していることと、S3へのアクセスに時間がかかっていることから、いくつかの可能性が考えられます。
まず、Active Storage と S3 の相性は問題ありません。Active Storage は S3 と一緒に使用するために設計されています。
以下のいくつかの点について確認をお願いします。
ネットワークの速度: ローカル環境からS3へのネットワークの速度が遅いと、ファイルのアップロードに時間がかかることがあります。ネットワークの速度を確認し、可能であれば高速な接続を使用してみてください。
ファイルの大きさ: アップロードするファイルの大きさによってもアップロード時間は変わります。大きなファイルをアップロードしようとしていないか確認してみてください。
コードの問題: SystemStackError (stack level too deep)エラーは通常、無限ループまたは深い再帰などの結果としてスタックオーバーフローが発生した場合に発生します。コード内に無限ルーバックや再帰呼び出しが存在しないか確認してみてください。
Active Storage の設定: Active Storage が正しく設定されているか確認してみてください。例えば、config/storage.yml内のS3設定が正しく行われているかなどを確認します。
ファイルの大きさが関係しているかもしれませんので、上記と合わせてアップロードするファイルの制限 or ファイルサイズを縮小してアップロードするようにしてみると良いかもしれません。
上記のログが出力された時に添付している画像は35KBです。さらに圧縮が必要でしょうか? ファイルサイズの相場観がなく伺いました。
なるほど。そのサイズなら問題ないかと。 他の検討箇所の確認してみていただけますか。
以下のアドバイスを基にファイルを見直してみました。
usersテーブルにavaterカラムを設定していたため、処理に時間がかかっていたようです。
こちらを削除してモデルファイルにhas_one_attached :avatar
の記述のみとすることで
不自然に時間がかかるっている状況が改善されました!
ありがとうございました!
深い再帰などの結果としてスタックオーバーフローが発生した場合に発生します。
質問内容・実現したいこと ・Amazon S3への画像保存にActive Strageを挟むと異常に時間がかかってしまう状況を改善したいです。ローカル環境です。 何かアドバイスをいただけないでしょうか?
現状発生している問題・エラーメッセージ(ログを添付しています) ・
SystemStackError (stack level too deep):
エラーが発生しています。 ・S3 Storage (834.0ms)
S3にアクセスする際に時間がかかっているように思います。どの処理までうまく動いているのか ・DBとS3への保存は成功しています。
エラーから考えられる原因 ・Active Strage とS3の相性が悪い?
該当のソースコード ・新規登録ユーザーがニックネームとアバター画像を登録できるように実装を進めています。 ・ニックネームとアバター画像ともにDBに保存されていることは確認できているのですが、S3に画像を保存する際に異常に時間がかかってしまいます。 [フロントエンド側]
[バックエンド側] 保存に使用しているのはupdateメソッドです。
ログ