Forum OpenACS Q&A: Better Performance: Multiple AOLserver(s) vs. One nsvhr'd AOLserver?

Perhaps I missed the answer to this question in the many posts
regarding multiple ACS's on one box...

Has anyone done the research to determine which solution is the better
performer for multiple OpenACS installations on one machine: One
nsvhr'd AOLserver or Multiple AOLserver(s)? (It is easier to
configure the latter, no?) Would you care to share your views?

SIDE BAR: I did not see notice in the AOLserver 3.2 release notes,
where the nsvhr and nsunix changes made by Jerry Asher (et al.) were
included, or do we still need the patch?

Thanks for your feedback. -Nate

I did not see any reference to nsunix changes in AOLserver 3.2 either.  (I haven't checked the code - I did submit Stephen Caranci's 3.1 port of my patches.)

Regardless, perhaps my brain is fuzzy at this moment, but your question doesn't seem to parse.  If you want to host n ACS's (version 3 series) on one box, you need need at least n AOLserver processes.  What nsvhr will do is multiplex requests to your system so that all n ACS's can seemingly share port 80 (or whichever port you want them to share.)  so that's n+1 processes.  Nsvhr does this by copying portions of the request.

It is almost certainly true that n+1 processes and a copy is less efficient that n processes, but it does give you the benefit of sharing port 80.

I believe I have read that in ACS 4, we should be able to host multiple ACS sites in just one AOLserver process.  (The reason you cannot now is that the names of database pools are hardcoded into the code.)

Even if ACS 4 lets you use just one AOLserver process, it is quite likely that folks who want to run different versions of ACS at the same time will still benefit from nsvhr if only to keep eliminate potential ACS library conflicts.

Collapse
3: New and Improved Vision (response to 1)
Posted by Nathan Bogo on
Clearly, I had an incorrect visual of the AOLserver virtual hosting process. I, mistakenly, envisioned one AOLserver process (magically enhanced with Jerry Asher's nsvhr/nsunix code) dealing with any number of ACS and non-ACS web sites, hosted on one machine. I must admit, I did not understand how, but I accepted it, which made for much confusion on my part.

My revised vision looks something like this...

  SiteA hosted by AOLserver(A) + OpenACS/ClassicACS(A) + nsd.tcl(A) + ad.tcl(A) listening on port ###A

  SiteB hosted by AOLserver(B) + OpenACS/ClassicACS(B) + nsd.tcl(B) + ad.tcl(B) listening on port ###B

  SiteC etc.

  PLUS AOLserver(Z) configured to "proxy" HOST:SiteA|B|C requests to the appropriate AOLserver(A|B|C) process.

Each AOLserver/ACS(A|B|C) process combination has its own tablespace, user, group, and logging to keep the system organized.

QUESTIONS:

  Do all the AOLservers for Sites A, B, C... need to have nsvhr.so installed?

  Does each AOLserver(A|B|C) have a unique nsd.tcl? (I assume yes.)

  Could I not use something like Squid to handle the proxy process? (I know only how to spell it, little else.)

Thank you for your feedback.

-Nate