From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: * X-Spam-ASN: AS33070 50.56.128.0/17 X-Spam-Status: No, score=1.8 required=3.0 tests=FROM_LOCAL_NOVOWEL, MSGID_FROM_MTA_HEADER,RDNS_NONE shortcircuit=no autolearn=no version=3.3.2 Path: news.gmane.org!not-for-mail From: Thorsten von Eicken Newsgroups: gmane.comp.lang.ruby.rainbows.general Subject: Re: HUP restart is delayed by 2 minutes Date: Wed, 29 Jan 2014 12:11:38 -0800 Organization: RightScale, Inc. Message-ID: <52E9607A.60107@rightscale.com> References: <52E89997.6020504@rightscale.com> <20140129070259.GA5938@dcvr.yhbt.net> <52E8AD1B.8090009@rightscale.com> <20140129083147.GA26652@dcvr.yhbt.net> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1391026310 17194 80.91.229.3 (29 Jan 2014 20:11:50 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 29 Jan 2014 20:11:50 +0000 (UTC) To: "Rainbows! list" Original-X-From: rainbows-talk-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Wed Jan 29 21:11:58 2014 Return-path: Envelope-to: gclrrg-rainbows-talk@m.gmane.org X-Original-To: rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Delivered-To: rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:organization:user-agent :mime-version:to:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=7tcAJxHKmXeelkqzBiw27Onivr1hmlMxWgo/tiUVYNQ=; b=BzVfsISl7Z4EqfNzYbeLYeYKOoFUuE06u/c+XVBlu+7YUgzuZI3gjOVBBaUFmTlWIs P9EwBmeOTZ5uky2vHpK95q32QW6xs2dMPpTM/5t1o+jnvbRLkE9eBAteAaMyOPdM+gjz Zr8yotOevruFMmQ+xdw/MmBybFkpHPxbCW2yBts4u1wGa/PEU6Nyc1vY9+IFHf7WUjuI f+q5hl+FuRkETW0GfXVPpASfxw43qq4hWXLbcVglbs4nA0WV/9vxI65kBUiRXmf6NOyX Og7H4q1HWZg3U4rWeaJ24cI5JpgmpxpoOCrN0X9JOoYCShKMODZaWh9ShORGrDWXX2N9 JC7Q== X-Gm-Message-State: ALoCoQl2zVHCOB50A+W1oGJuiVNn+f+1jsopswA6vnVd0vRS93AD1qmummM40WueuM8p93qdF+Ei X-Received: by 10.68.171.99 with SMTP id at3mr10030783pbc.109.1391026298903; Wed, 29 Jan 2014 12:11:38 -0800 (PST) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 In-Reply-To: <20140129083147.GA26652-yBiyF41qdooeIZ0/mPfg9Q@public.gmane.org> X-Enigmail-Version: 1.6 X-BeenThere: rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: rainbows-talk-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Errors-To: rainbows-talk-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org X-Broken-Reverse-DNS: no host name found for IP address 50.56.192.79 Xref: news.gmane.org gmane.comp.lang.ruby.rainbows.general:584 Archived-At: Received: from [50.56.192.79] (helo=rubyforge.org) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1W8bU7-00049u-Cf for gclrrg-rainbows-talk@m.gmane.org; Wed, 29 Jan 2014 21:11:43 +0100 Received: from localhost.localdomain (localhost [127.0.0.1]) by rubyforge.org (Postfix) with ESMTP id D6C1C2E17C; Wed, 29 Jan 2014 20:11:42 +0000 (UTC) Received: from mail-pd0-f178.google.com (mail-pd0-f178.google.com [209.85.192.178]) by rubyforge.org (Postfix) with ESMTP id E939B263076 for ; Wed, 29 Jan 2014 20:11:40 +0000 (UTC) Received: by mail-pd0-f178.google.com with SMTP id y13so2135997pdi.9 for ; Wed, 29 Jan 2014 12:11:39 -0800 (PST) Received: from [192.168.0.2] (sb0-cf9a657f.dsl.impulse.net. [207.154.101.127]) by mx.google.com with ESMTPSA id yd4sm9978573pbc.13.2014.01.29.12.11.36 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 29 Jan 2014 12:11:37 -0800 (PST) On 1/29/2014 12:31 AM, Eric Wong wrote: > Thorsten von Eicken wrote: >> On 1/28/2014 11:02 PM, Eric Wong wrote: >>> Thorsten von Eicken wrote: >>>> I'm having trouble getting the HUP restart to work properly (I do have >>>> preload_app=false). What happens is that on HUP the master reloads the >>>> config file, but it then always takes 2 minutes plus 1-2 seconds for the >>>> workers to be reaped. The servers is totally idle, so this is not due to >>>> some open connections. Here's how it looks in the log file with 2 worker >>>> processes: >>> Which concurrency option are you using and which version of Rainbows!, >>> unicorn and Ruby is this? >> root@vscale:/home/vscale-admin/current# bundle show rainbows >> /var/lib/gems/1.9.1/gems/rainbows-4.5.0 >> root@vscale:/home/vscale-admin/current# bundle show unicorn >> /var/lib/gems/1.9.1/gems/unicorn-4.7.0 >> root@vscale:/home/vscale-admin/current# bundle exec ruby -v >> ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux] >> root@vscale:/home/vscale-admin/current# bundle exec rainbows --version >> Rainbows! v4.5.0 > This looks like a symptom of unicorn 4.8.0 interacting badly > with rainbows 4.5.0, not unicorn 4.7.0. Can you give > rainbows 4.6.0 + unicorn 4.8.0 a try? Unfortunately, I broke > rainbows 4.5.0 and earlier with unicorn 4.8.0 :x > > I'll be pushing out unicorn 4.8.1 soon with a minor, unrelated bugfix. > I am now running with Rainbows 4.6.0 and Unicorn 4.8.1 and still see the same, but not always (the first restart only took 3-4 seconds to happen). I'm printing the versions in the config file: Rainbows version: 4.6.0 Unicorn version: 4.8.1 I, [2014-01-29T11:55:43.687022 #18919] INFO -- : done reloading config_file=./config/rainbows.rb I did an strace of a worker process and not much is happening: $ strace -p 19255 Process 19255 attached - interrupt to quit ppoll([{fd=9, events=POLLIN|POLLPRI}], 1, {0, 805429204}, NULL, 8) = 0 (Timeout) ppoll([{fd=9, events=POLLIN|POLLPRI}], 1, {0, 999995000}, NULL, 8) = 0 (Timeout) ppoll([{fd=9, events=POLLIN|POLLPRI}], 1, {0, 999996000}, NULL, 8) = 0 (Timeout) ... ppoll([{fd=9, events=POLLIN|POLLPRI}], 1, {0, 999997000}, NULL, 8) = 0 (Timeout) ppoll([{fd=9, events=POLLIN|POLLPRI}], 1, {0, 999996000}, NULL, 8) = 0 (Timeout) ppoll([{fd=9, events=POLLIN|POLLPRI}], 1, {0, 999997000}, NULL, 8) = 0 (Timeout) exit_group(2) = ? Process 19255 detached Here's an strace of the master process (the workers at that time were 19781 and 19783). I marked the spot where everything just sits waiting for 2 minutes and there clearly is a select call with a 2 minute timeout. --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- rt_sigreturn(0x1a) = -1 EINTR (Interrupted system call) futex(0x7f0ac29b67a0, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 futex(0x7f0ac29b67a0, FUTEX_WAKE_PRIVATE, 1) = 0 rt_sigprocmask(SIG_SETMASK, ~[SEGV VTALRM RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 fcntl(6, F_GETFL) = 0x801 (flags O_WRONLY|O_NONBLOCK) write(6, ".", 1) = 1 select(6, [5], NULL, NULL, {77, 985736}) = 1 (in [5], left {77, 985735}) fcntl(5, F_GETFL) = 0x800 (flags O_RDONLY|O_NONBLOCK) read(5, ".", 11) = 1 wait4(-1, 0x7fff006feabc, WNOHANG, NULL) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 write(2, "I, [2014-01-29T12:03:19.875207 #"..., 93) = 93 open("./config/rainbows.rb", O_RDONLY) = 8 fstat(8, {st_mode=S_IFREG|0644, st_size=1642, ...}) = 0 fstat(8, {st_mode=S_IFREG|0644, st_size=1642, ...}) = 0 ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe8c8) = -1 ENOTTY (Inappropriate ioctl for device) fstat(8, {st_mode=S_IFREG|0644, st_size=1642, ...}) = 0 lseek(8, 0, SEEK_CUR) = 0 read(8, "# See http://unicorn.bogomips.or"..., 1642) = 1642 read(8, "", 8192) = 0 close(8) = 0 getcwd("/home/vscale-admin/git", 200) = 23 write(2, "./config/rainbows.rb:4: warning:"..., 71) = 71 write(1, "APP_PATH is /home/vscale-admin/c"..., 38) = 38 write(1, "\n", 1) = 1 write(2, "./config/rainbows.rb:8: warning:"..., 71) = 71 write(2, "./config/rainbows.rb:9: warning:"..., 71) = 71 stat("/home/vscale-admin/current/./config/rainbows.rb", {st_mode=S_IFREG|0644, st_size=1642, ...}) = 0 geteuid() = 0 getegid() = 0 getuid() = 0 getgid() = 0 access("/home/vscale-admin/current/./config/rainbows.rb", R_OK) = 0 chdir("/home/vscale-admin/current") = 0 write(1, "Rainbows version: 4.6.0", 23) = 23 write(1, "\n", 1) = 1 write(1, "Unicorn version: 4.8.1", 22) = 22 write(1, "\n", 1) = 1 stat("./config.ru", {st_mode=S_IFREG|0644, st_size=633, ...}) = 0 geteuid() = 0 getegid() = 0 getuid() = 0 getgid() = 0 access("./config.ru", R_OK) = 0 open("./config.ru", O_RDONLY) = 8 fstat(8, {st_mode=S_IFREG|0644, st_size=633, ...}) = 0 fstat(8, {st_mode=S_IFREG|0644, st_size=633, ...}) = 0 ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe8c8) = -1 ENOTTY (Inappropriate ioctl for device) fstat(8, {st_mode=S_IFREG|0644, st_size=633, ...}) = 0 lseek(8, 0, SEEK_CUR) = 0 read(8, "require 'rack/mount'\nrequire Fil"..., 633) = 633 brk(0x24c6000) = 0x24c6000 read(8, "", 8192) = 0 brk(0x24c4000) = 0x24c4000 close(8) = 0 stat("/var/run/admin.pid", {st_mode=S_IFREG|0644, st_size=6, ...}) = 0 geteuid() = 0 getegid() = 0 getuid() = 0 getgid() = 0 access("/var/run/admin.pid", W_OK) = 0 stat("/var/log/admin.log", {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 geteuid() = 0 getegid() = 0 getuid() = 0 getgid() = 0 access("/var/log/admin.log", W_OK) = 0 stat("/var/log/admin.log", {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 geteuid() = 0 getegid() = 0 getuid() = 0 getgid() = 0 access("/var/log/admin.log", W_OK) = 0 open("/var/run/admin.pid", O_RDONLY) = 8 fstat(8, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0 fstat(8, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0 ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe3a8) = -1 ENOTTY (Inappropriate ioctl for device) fstat(8, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0 lseek(8, 0, SEEK_CUR) = 0 read(8, "18919\n", 6) = 6 read(8, "", 8192) = 0 close(8) = 0 kill(18919, SIG_0) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(8001), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(8001), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(8001), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(8001), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 setsockopt(7, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(8001), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 setsockopt(7, SOL_TCP, TCP_NODELAY, [1], 4) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(8001), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 setsockopt(7, SOL_TCP, TCP_CORK, [1], 4) = 0 getsockname(7, {sa_family=AF_INET, sin_port=htons(8001), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 setsockopt(7, SOL_TCP, TCP_DEFER_ACCEPT, [60], 4) = 0 listen(7, 1024) = 0 open("/var/log/admin.log", O_WRONLY|O_CREAT|O_APPEND, 0666) = 8 fstat(8, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 fstat(8, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe388) = -1 ENOTTY (Inappropriate ioctl for device) dup2(8, 2) = 2 fstat(2, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 close(8) = 0 open("/var/log/admin.log", O_WRONLY|O_CREAT|O_APPEND, 0666) = 8 fstat(8, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 fstat(8, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe388) = -1 ENOTTY (Inappropriate ioctl for device) dup2(8, 1) = 1 fstat(1, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 close(8) = 0 fcntl(9, F_GETFL) = 0x1 (flags O_WRONLY) fcntl(9, F_SETFL, O_WRONLY|O_NONBLOCK) = 0 write(9, "\3\0\0\0", 4) = 4 fcntl(10, F_GETFL) = 0x1 (flags O_WRONLY) fcntl(10, F_SETFL, O_WRONLY|O_NONBLOCK) = 0 write(10, "\3\0\0\0", 4) = 4 fstat(2, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 fcntl(2, F_GETFL) = 0x8401 (flags O_WRONLY|O_APPEND|O_LARGEFILE) fstat(1, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 fcntl(1, F_GETFL) = 0x8401 (flags O_WRONLY|O_APPEND|O_LARGEFILE) fstat(2, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 stat("/var/log/admin.log", {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 fstat(1, {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 stat("/var/log/admin.log", {st_mode=S_IFREG|0644, st_size=606916, ...}) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 write(2, "I, [2014-01-29T12:03:19.887123 #"..., 98) = 98 wait4(-1, 0x7fff006feabc, WNOHANG, NULL) = 0 select(6, [5], NULL, NULL, {120, 0} # ======================== LONG DELAY HERE ==================================== ) = 0 (Timeout) wait4(-1, 0x7fff006feabc, WNOHANG, NULL) = 0 select(6, [5], NULL, NULL, {120, 0}) = ? ERESTARTNOHAND (To be restarted) --- SIGCHLD (Child exited) @ 0 (0) --- write(4, "!", 1) = 1 --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- rt_sigreturn(0x1a) = 1 rt_sigreturn(0x2) = -1 EINTR (Interrupted system call) futex(0x1902708, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- rt_sigreturn(0x1a) = 0 futex(0x1902708, FUTEX_WAKE_PRIVATE, 1) = 0 rt_sigprocmask(SIG_SETMASK, ~[SEGV VTALRM RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 fcntl(6, F_GETFL) = 0x801 (flags O_WRONLY|O_NONBLOCK) write(6, ".", 1) = 1 select(6, [5], NULL, NULL, {116, 267701}) = 1 (in [5], left {116, 267700}) fcntl(5, F_GETFL) = 0x800 (flags O_RDONLY|O_NONBLOCK) read(5, ".", 11) = 1 wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], WNOHANG, NULL) = 19781 close(9) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 write(2, "E, [2014-01-29T12:05:23.674893 #"..., 103) = 103 wait4(-1, 0x7fff006feabc, WNOHANG, NULL) = 0 getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=4*1024}) = 0 pipe([8, 9]) = 0 fstat(8, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 fstat(9, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 fcntl(8, F_GETFL) = 0 (flags O_RDONLY) fstat(8, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe338) = -1 ENOTTY (Inappropriate ioctl for device) fcntl(9, F_GETFL) = 0x1 (flags O_WRONLY) fstat(9, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 ioctl(9, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe338) = -1 ENOTTY (Inappropriate ioctl for device) fcntl(8, F_SETFD, FD_CLOEXEC) = 0 fcntl(9, F_SETFD, FD_CLOEXEC) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 write(2, "I, [2014-01-29T12:05:23.676466 #"..., 71) = 71 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigaction(SIGPIPE, {0x7f0ac26607a0, [], SA_RESTORER|SA_SIGINFO, 0x7f0ac221b4a0}, {SIG_IGN, [], SA_RESTORER|SA_SIGINFO, 0x7f0ac221b4a0}, 8) = 0 write(4, "!", 1) = 1 futex(0x7f0ac2bd89d0, FUTEX_WAIT, 19784, NULL) = ? ERESTARTSYS (To be restarted) --- SIGCHLD (Child exited) @ 0 (0) --- write(4, "!", 1) = 1 rt_sigreturn(0x2) = -1 EINTR (Interrupted system call) futex(0x7f0ac2bd89d0, FUTEX_WAIT, 19784, NULL) = 0 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f0ac2bcf9d0) = 19798 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 clone(child_stack=0x7f0ac2bd7ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f0ac2bd89d0, tls=0x7f0ac2bd8700, child_tidptr=0x7f0ac2bd89d0) = 19799 rt_sigprocmask(SIG_SETMASK, ~[SEGV VTALRM RTMIN RT_1], NULL, 8) = 0 rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER|SA_SIGINFO, 0x7f0ac221b4a0}, {0x7f0ac26607a0, [], SA_RESTORER|SA_SIGINFO, 0x7f0ac221b4a0}, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[SEGV VTALRM RTMIN RT_1], NULL, 8) = 0 close(8) = 0 select(6, [5], NULL, NULL, {120, 0}) = ? ERESTARTNOHAND (To be restarted) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- rt_sigreturn(0x1a) = -1 EINTR (Interrupted system call) futex(0x1902708, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 futex(0x1902708, FUTEX_WAKE_PRIVATE, 1) = 0 rt_sigprocmask(SIG_SETMASK, ~[SEGV VTALRM RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 fcntl(6, F_GETFL) = 0x801 (flags O_WRONLY|O_NONBLOCK) write(6, ".", 1) = 1 select(6, [5], NULL, NULL, {119, 999369}) = 1 (in [5], left {119, 999368}) fcntl(5, F_GETFL) = 0x800 (flags O_RDONLY|O_NONBLOCK) read(5, ".", 11) = 1 wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], WNOHANG, NULL) = 19783 close(10) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 write(2, "E, [2014-01-29T12:05:23.681011 #"..., 103) = 103 wait4(-1, 0x7fff006feabc, WNOHANG, NULL) = 0 getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=4*1024}) = 0 pipe([8, 10]) = 0 fstat(8, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 fstat(10, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 fcntl(8, F_GETFL) = 0 (flags O_RDONLY) fstat(8, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe338) = -1 ENOTTY (Inappropriate ioctl for device) fcntl(10, F_GETFL) = 0x1 (flags O_WRONLY) fstat(10, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 ioctl(10, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff006fe338) = -1 ENOTTY (Inappropriate ioctl for device) fcntl(8, F_SETFD, FD_CLOEXEC) = 0 fcntl(10, F_SETFD, FD_CLOEXEC) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0 write(2, "I, [2014-01-29T12:05:23.682344 #"..., 71) = 71 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigaction(SIGPIPE, {0x7f0ac26607a0, [], SA_RESTORER|SA_SIGINFO, 0x7f0ac221b4a0}, {SIG_IGN, [], SA_RESTORER|SA_SIGINFO, 0x7f0ac221b4a0}, 8) = 0 write(4, "!", 1) = 1 futex(0x7f0ac2bd89d0, FUTEX_WAIT, 19799, NULL) = 0 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f0ac2bcf9d0) = 19800 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 clone(child_stack=0x7f0ac2bd7ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f0ac2bd89d0, tls=0x7f0ac2bd8700, child_tidptr=0x7f0ac2bd89d0) = 19801 rt_sigprocmask(SIG_SETMASK, ~[SEGV VTALRM RTMIN RT_1], NULL, 8) = 0 rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER|SA_SIGINFO, 0x7f0ac221b4a0}, {0x7f0ac26607a0, [], SA_RESTORER|SA_SIGINFO, 0x7f0ac221b4a0}, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[SEGV VTALRM RTMIN RT_1], NULL, 8) = 0 close(8) = 0 select(6, [5], NULL, NULL, {120, 0} ^C Process 18919 detached My config file is: # See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete # documentation. APP_PATH = File.expand_path(File.join(File.dirname(__FILE__), '../../current')) puts "APP_PATH is #{APP_PATH}" if [ 'staging', 'production' ].include?(ENV['RACK_ENV']) PID_FILE = '/var/run/admin.pid' LOG_FILE = '/var/log/admin.log' else PID_FILE = File.join(APP_PATH, 'rainbows.pid') LOG_FILE = APP_PATH + "/log/admin.log" end Rainbows! do use :EventMachine # concurrency model to use worker_connections 5 keepalive_timeout 2 # zero disables keepalives entirely client_max_body_size 5*1024*1024 # 5 megabytes Rainbows.module_eval do EventMachine.kqueue = false if RUBY_PLATFORM =~ /darwin/i end end # Help ensure your application will always spawn in the symlinked # "current" directory that Capistrano sets up. working_directory APP_PATH worker_processes 2 # make this configurable later stderr_path LOG_FILE stdout_path LOG_FILE # Requests can take a looonng time timeout 120 # we use a shorter backlog for quicker failover when busy listen "127.0.0.1:8001", :tcp_nopush => true # PID file location pid PID_FILE # Don't preload app: minimal savings and breaks HUP process control signal preload_app false GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true puts "Rainbows version: #{Rainbows::Const::RAINBOWS_VERSION}" puts "Unicorn version: #{Rainbows::Const::UNICORN_VERSION}" _______________________________________________ Rainbows! mailing list - rainbows-talk-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org http://rubyforge.org/mailman/listinfo/rainbows-talk Do not quote signatures (like this one) or top post when replying