Hi,
I run a medium-sized website that uses mongrel/rails in the following
configuration:
-frontend reverse proxy to a cluster of 7 app servers
-each app server runs apache 2.2 with mod_proxy_balancer that balancers
the requests out into a mongrel cluster of 35 servers.
-each mongrel is version 1.0.1
the mongrel cluster config looks like:
port: "1620"
environment: production
address: 127.0.0.1
pid_file: log/mongrel.pid
servers: 35
The problem is, when the mongrel processes are sent a USR2 signal, some
of them seem to have threads running, that are waiting for data on a
socket that's been disconnected from the apache balancer long ago.
process 27457 has been sent a USR2 signal, and is waiting for its thread
to die:
[EMAIL PROTECTED] config]$ /usr/sbin/lsof | grep 27457
[snip]
ruby 27457 ilike 28u IPv4 214673805 TCP
*:49242 (LISTEN)
ruby 27457 ilike 29u IPv4 214673810 TCP
app04:49244->10.1.2.10:mysql (ESTABLISHED)
[snip]
Here's the strace of what it's actually doing:
[EMAIL PROTECTED] config]$ strace -p 27457
Process 27457 attached - interrupt to quit
select(29, [28], [], [], {0, 137000}) = 0 (Timeout)
gettimeofday({1171499150, 914277}, NULL) = 0
select(29, [28], [], [], {0, 175}) = 0 (Timeout)
gettimeofday({1171499150, 915224}, NULL) = 0
select(29, [28], [], [], {0, 0}) = 0 (Timeout)
time(NULL) = 1171499150
gettimeofday({1171499150, 915386}, NULL) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1017, ...}) = 0
write(2, "Wed Feb 14 16:25:50 PST 2007: Re"..., 86) = 86
write(2, "\n", 1) = 1
gettimeofday({1171499150, 915596}, NULL) = 0
write(2, "Waiting for 1 requests to finish"..., 58) = 58
Port 49242 is an irrelevant port - the mongrels listen on ports
1620-1655 (the mongrel in question has closed out its main port). It
seems that the mongrel is waiting for data on a port that has become
disconnected from the mod_proxy_balancer.
I could probably provide an end-to-end strace if needed, although
picking out the relevant bits could be tough.
-ben
_______________________________________________
Mongrel-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/mongrel-users