Since Geoff needs to use IIS, I think that helps push us toward the
viable answer. None of us are going to write a module for IIS.
I would like to put forth the following suggestions (with reasoning):
1. Our focus for now should be on stability/reliability. Load
balancing won't be a real issue for quite some time, most likely, and it
will complicate things.
2. We need a fail-over system. I can still make WebKit segfault. I
think this is related to the memory leak.
3. The fail-over system does not HAVE to be a separate process. The
current adaptors can just start a new AppServer if they don't get a
connection in x seconds.
So, I suggest we focus on the following.
1. Write a small fast persistent cgi adaptor in C for IIS, etc. This
will work on any webserver and can be very fast and reliable. Along
these lines, I'm working on a C library to handle marshaling, etc.
2. Find the Memory leak. This most likely will improve the stability
and make 3 less important.
3. Think of a way to handle preserving sessions if we can't find the
memory leak and need to kill AppServer after X number of requests. BUT,
if we can't find the mem leak and segfault, any session persistence
mechanism won't matter, most likely, as the server could crash at any
I'm not real concerned with writing custom adaptors/modules for
webservers. The only one we can do this for is apache, and FastCGI
works fine there. I'm not sure how much faster a custom apache module
will be. We're already faster than JServe with FastCGI. We might want
an apache module for load-balancing, but I suggest postponing that.
Chuck, is there a fast cgi module for apache on Windows? Have you tried
I'm thinking we should postpone doing a monitor type process 'till 0.5
or 0.6. I think this will be the way to go later, as it will work with
a PCGI style adaptor, but it will introduce the session issues and
other over-head and the time spent on that might be better spent on the
core functionality and finding bugs for now.
I suggest that for now we add a way for the adaptors to start the
AppServer themselves if it's not there and leave it at that for now.
So, that's my basic thinking at the moment. (It seemed a lot more
thorough out while I was sitting in traffic on the way home).