3

capistrano を使用してデプロイした後、最初に Web サイトをロードすると、長い遅延が発生します。その後、新しいリクエストは非常に高速です。その後、サイトを再度読み込むと、1時間ほど後に最初のリクエストが永遠に続きます。多くの場合、500 エラー ページが返されることさえあります (タイムアウトのために推測しています)。次に、更新を押すと、すぐに読み込まれます。

サーバーが新しいリクエストを受信して​​から一定時間が経過すると、レール環境全体がリロードされると思います。環境の 1 つのコピーを常に実行し続ける方法はありますか?

これが私のユニコーン設定です:

root = "/home/user/apps/app_name/current"
working_directory root
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.log"
stdout_path "#{root}/log/unicorn.log"

listen "/tmp/unicorn.app_name.sock"
worker_processes 2
timeout 60

生産ログ

Started GET "/" for 1.2.3.4 at 2012-08-10 09:59:13 +0000
Connecting to database specified by database.yml


Started GET "/" for 1.2.3.4 at 2012-08-10 10:03:14 +0000
Connecting to database specified by database.yml


Started GET "/" for 1.2.3.4 at 2012-08-10 10:04:38 +0000
Processing by PagesController#home as HTML
  Rendered layouts/_top_bar_public.html.erb (1.1ms)
  Rendered shared/_flash.html.erb (0.3ms)
  Rendered pages/home.html.erb within layouts/application (8.4ms)
Completed 200 OK in 48ms (Views: 47.5ms | ActiveRecord: 0.0ms)

Unicorn.log

E, [2012-08-10T10:00:14.449348 #6005] ERROR -- : worker=1 PID:4951 timeout (61s > 60s), killing
E, [2012-08-10T10:00:14.458442 #6005] ERROR -- : reaped #<Process::Status: pid 4951 SIGKILL (signal 9)> worker=1
I, [2012-08-10T10:00:14.458796 #6005]  INFO -- : worker=1 spawning...
I, [2012-08-10T10:00:14.465259 #6458]  INFO -- : worker=1 spawned pid=6458
I, [2012-08-10T10:00:14.465639 #6458]  INFO -- : Refreshing Gem list
I, [2012-08-10T10:00:18.115613 #6458]  INFO -- : worker=1 ready
E, [2012-08-10T10:04:15.706315 #6005] ERROR -- : worker=0 PID:4929 timeout (61s > 60s), killing
E, [2012-08-10T10:04:15.716064 #6005] ERROR -- : reaped #<Process::Status: pid 4929 SIGKILL (signal 9)> worker=0
I, [2012-08-10T10:04:15.716566 #6005]  INFO -- : worker=0 spawning...
I, [2012-08-10T10:04:15.723733 #6461]  INFO -- : worker=0 spawned pid=6461
I, [2012-08-10T10:04:15.724111 #6461]  INFO -- : Refreshing Gem list
I, [2012-08-10T10:04:19.298475 #6461]  INFO -- : worker=0 ready

ps ux:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
deployer  6005  0.0  3.3 149880 20292 ?        Sl   Aug01   0:15 unicorn master -D -c /home/deployer/apps/app_name
deployer  6458  0.2  9.6 234544 58036 ?        Sl   10:00   0:03 unicorn worker[1] -D -c /home/deployer/apps/app_name
deployer  6461  0.2  9.3 232924 56564 ?        Sl   10:04   0:03 unicorn worker[0] -D -c /home/deployer/apps/app_name
deployer  6563  0.0  0.2  73352  1804 ?        S    10:29   0:00 sshd: deployer@pts/0
deployer  6564 13.3  1.3  25744  8196 pts/0    Ss   10:29   0:00 -bash
deployer  6743  0.0  0.2  16872  1264 pts/0    R+   10:29   0:00 ps ux
4

1 に答える 1

1

これは奇妙な動作です。展開時にクリーンアップして tmp/restart に触れてサーバーを再起動する必要があるためです。

$:.ps ux上記の構成は、コマンドラインに挿入することでチェックアウトできるユニコーンのワーカープロセスとマスタープロセスの2つのプロセスがあることを示唆しています

何が問題なのかをより明確に把握するには、Web サーバーに ssh 接続し、次のコマンドを使用して production.log と unicorn.err の両方を追跡します。$tail -f log/file.extention

于 2012-08-10T07:25:57.273 に答える