On Thu, Jun 24, 1999, [EMAIL PROTECTED] wrote:
> [...]
> What about maintaining a persistent connection to a gcache server on a
> per-child or per-thread basis within Apache?
> And possibly having a list of gcache servers to connect to for
> fail-over?
> And possibly connecting to a "load-balancer" which then tells mod_ssl which
> gcache server to connect to?
Hey, these are great suggestions. Yes, that's very reasonable. The same way
databases are connected in PHP and friends. I've added this to the
Wishlist...
> We have a real need for such a beast and would love to help out.
That would be great! I personally have no time to implement such a beast in
the next 6 months. And because I personally also do not have the real need for
it currently it will not get major priority on my todo list, of course. But
when you want to help out, that would be great.
Here is what I would do:
- Write a generic caching package consisting of a caching server and a caching
client.
- The server is a multithreaded beast which uses a high-performance hash
library for storing the stuff in the heap.
- The client is a library providing an API which handles all the socket
details and server correspondence.
- The client library then is used inside mod_ssl from within
ssl_engine_scache.c.
- The whole stuff should be _totally_ independent of mod_ssl or SSL, i.e. it
should allow one to cache any data, not only SSL sessions. And so it should
be released as a separate package similar to MM. Apache+mod_ssl just uses
it.
- For the hashing library I would use the "table" library I already
used in mod_ssl. For the threading I would use NPS for maximum
portability.
That is exactly what I personally would do when I had time for this project...
OTOH perhaps there already exists such a beast and I just do not know it. But
currently I do not know an existing thing which provides this.
> About NPS, does this library "work" on multi-processor machines? That is,
> are NPS threads bound to a single CPU?
No, NPS' definitive major goal is portability (because threading libraries
exists a lot, but only semi-portable ones!). And so NPS is a pure user-land
threading package without any kernel-level support and requirements. So it
cannot bound to an LWP (as Solaris' threads do) or process and this cannot
leverage from multiprocessor machines, of course. The threads are bound to a
single CPU, yes. Please read the documentation of NPS, there I explain all the
background and the intentions of NPS.
Ralf S. Engelschall
[EMAIL PROTECTED]
www.engelschall.com
______________________________________________________________________
Apache Interface to OpenSSL (mod_ssl) www.modssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]