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

Reply via email to