BTW, when I say "load-balancing" here, I don't mean only between
physical hosts or virtual hosts, but also among processes on the same
multi-CPU/core physical machine.
If you are running dedicated server hardware, and you're CPU-bound, each
CPU/core can service a separately-GC'd server process, so long as you
can add and address enough RAM to divide up. This is true whether or
not you put each server in a VM or in the same OS. In addition to
letting the host OS do most of the worrying how about how to best
leverage multiprocessing, the consequently smaller heaps might also be
faster to GC.
Neil Van Dyke wrote at 12/30/2011 03:54 PM:
Noel Welsh wrote at 12/30/2011 02:54 PM:
Yes, GC pauses get annoying when the heap gets large. This can lead to
timeouts on the client side.
FWIW, we've talked in the past about GC and Web serving in general
(not specific to the Racket Web Server; I was thinking of my SCGI
library at the time).
Separate from any changes from GC research, if GC became a problem for
my long-running Web app processes, there are options with the existing
Racket version, including scheduling forces of GC cycles to when we
think the process would otherwise be idle, making forced GC be part of
load-balancing, and even periodically replacing a long-running process
with a fresh one.
That last one would not apply if you're talking about keeping Web
serving continuations in-core, of course, except as part of some smart
load-balancing solution.
--
http://www.neilvandyke.org/
____________________
Racket Users list:
http://lists.racket-lang.org/users