forked from slact/nchapp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathunicorn.rb
73 lines (61 loc) · 2.45 KB
/
unicorn.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
require "queris"
# Sample verbose configuration file for Unicorn (not Rack)
#
# This configuration file documents many features of Unicorn
# that may not be needed for some applications. See
# http://unicorn.bogomips.org/examples/unicorn.conf.minimal.rb
# for a much simpler configuration file.
#
# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
# documentation.
# Use at least one worker per core if you're on a dedicated server,
# more will usually help for _short_ waits on databases/caches.
worker_processes 20
# Help ensure your application will always spawn in the symlinked
# "current" directory that Capistrano sets up.
#working_directory "/path/to/app/current" # available in 0.94.0+
# listen on both a Unix domain socket and a TCP port,
# we use a shorter backlog for quicker failover when busy
listen "/tmp/nchapp_unicorn.sock", :backlog => 64
listen 9293, :tcp_nopush => true
# nuke workers after 30 seconds instead of 60 seconds (the default)
timeout 30
# feel free to point this anywhere accessible on the filesystem
pid "/tmp/nchapp_unicorn.pid"
# By default, the Unicorn logger will write to stderr.
# Additionally, some applications/frameworks log to stderr or stdout,
# so prevent them from going to /dev/null when daemonized here:
stderr_path "/var/log/nchapp/unicorn.stderr.log"
stdout_path "/var/log/nchapp/unicorn.stdout.log"
# combine Ruby 2.0.0+ with "preload_app true" for memory savings
preload_app true
GC.respond_to?(:copy_on_write_friendly=) and
GC.copy_on_write_friendly = true
# Enable this flag to have unicorn test client connections by writing the
# beginning of the HTTP headers before calling the application. This
# prevents calling the application for connections that have disconnected
# while queued. This is only guaranteed to detect clients on the same
# host unicorn runs on, and unlikely to detect disconnects even on a
# fast LAN.
check_client_connection false
# local variable to guard against running a hook multiple times
run_once = true
before_fork do |server, worker|
Queris.disconnect
if run_once
# do_something_once_here ...
run_once = false # prevent from firing again
end
end
after_fork do |server, worker|
Queris.reconnect
if worker.nr + 1 == server.worker_processes
#loaded last worker. kill old unicorn master if necessary
begin
oldpid = File.read "#{server.pid}.oldbin"
Process.kill(:QUIT, oldpid.to_i)
rescue Errno::ENOENT
#no problem
end
end
end