古いRailsとPostgreSQLアプリケーションを2.1からRails 3にアップグレードする途中です(中間2.3.11の手順を成功させることで)。ユニコーン! PostgreSQL
最後に、すべてのRspecがスムーズに実行されたら、Mongrel 1.2.0.pre2をインストールして起動しました。すべてOKです。 100人の同時ユーザーのJMeterテストケースでもOKになりました。
しかし、私はユニコーンで同じことをしようとしたとき!サーバーでは、自分で使用しているとうまく動作しますが、JMeterを使用して負荷をかけた場合、JMeterがログインを試みる時点から100%のエラーが発生します。私はいくつかの特定のページをチェックし、同時に、それは私にこのような奇妙なエラーを与える:端末で
undefined method `eq' for nil:NilClass
を私は次の出力を得る(しかし、わずか数回):
message type 0x43 arrived from server while idle
message type 0x5a arrived from server while idle
WARNING: there is already a transaction in progress
編集:これは、共有PGconnect
オブジェクトの問題のようですので、私は、私はPostgreSQL docsがPGconn
オブジェクトが共有されてはならないことを指定することがわかっ
前のテキストの一部を削除しました同時要求を行うスレッド間。
ユニコーンです!または同一のPGconn
オブジェクト内の異なるスレッドからのARミキシング要求?
database.ymlの:
production:
adapter: postgresql
encoding: unicode
database: ***
username: ***
password: ***
host: 127.0.0.1
私も無駄にこれを追加しようとしました:
allow_concurrency: true
unicorn.conf:
worker_processes 8
working_directory "/full/path/to/app"
listen '/tmp/app.sock', :backlog => 512
timeout 30
pid "/full/path/to/app/tmp/pids/puppetmaster_unicorn.pid"
preload_app true
if GC.respond_to?(:copy_on_write_friendly=)
GC.copy_on_write_friendly = true
end
仕様:
- Rails 3.0.6(デプロイメントのため)
- ユニコーン! 4.1.1
- nginxの1.0.5
- PG宝石0.11.0
- のPostgreSQL 9.0.4
- のMac OS X 10.7.2
Railsのバージョンはもちろんの犯人でなければならない場合私は最新のものにアップグレードすることができます。私は、サービスプロバイダが持っているものから始めました。
あなたはunicorn.rbで作成するにはどうすれば多くのユニコーンの労働者?タイムアウトは何ですか? – stephenmurdoch
私の質問をunicorn.confで更新しました – Laas