私は最近、新しいアプリケーションサーバーを設定する(Rubyはnginxの1.0.6、REE、Railsの2.3.8、旅客3.0.9を1.8.7)プロキシの背後にあるといくつかの奇妙な行動に遭遇しています。このアプリケーションサーバーだけに投稿/ログインすると、502 Bad Gatewayエラーが発生します。これは他のアプリサーバーでは起こりません。両方とも同じように設定されています。問題を特定のコード行(Authlogicセッションの保存)に絞り込んだ。私はこれらの行(特にコールを保存)コメントアウトする場合:Authlogic、Railsのコンソールで不当命令
@user_session = UserSession.new(params[:user_session])
if @user_session.save
...
を502エラーが発生しなくなりました。私はコンソールでこれらのコマンドをテストするとき同様に、私は不当命令応答とコンソールがクラッシュを取得:他のアプリケーション・サーバー上の
>> Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)
>> @user_session = UserSession.new({"password"=>"password", "remember_me"=>"0", "login"=>"myuser"})
>> @user_session.save
Illegal instruction
テストこれはうまく動作します(コンソールは不当命令結果でクラッシュしません)。
このトラブルシューティングを開始するために、任意のアイデア?私は、RailsログまたはNginxログのいずれの価値も何も見ません。
ありがとうございました。
編集
不当命令はdigest.rbするシステムコールの間に発生しています。
stat("/opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/1.8/digest.rb", {st_mode=S_IFREG|0644, st_size=1145, ...}) = 0
open("/opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/1.8/digest.rb", O_RDONLY) = 15
fstat(15, {st_mode=S_IFREG|0644, st_size=1145, ...}) = 0
close(15) = 0
--- SIGILL (Illegal instruction) @ 0 (0) ---
FYI、私はそれは問題ではありませんので、問題のアプリケーション・サーバー上のAuthlogicの宝石は、作業アプリケーションサーバ上のものと同一であること(差分を使用して)確認しました。 – modulaaron
IRBで 'digest''が必要な場合はどうなりますか? –
'require 'digest''はIRBで正常に動作します。 – modulaaron