Good evening... and rats...(kind of).
I'd just started putting jk2_get_most_suitable_worker() into pseudocode
myself, but glad that it has finally been done in any case. For those that
haven't looked at the code, it will come as a surprise to learn the
magnitude of the decision making process.
Thanks to you and Angus.
Norm

----- Original Message ----- 
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, April 15, 2004 4:32 PM
Subject: cvs commit: jakarta-tomcat-connectors/jk/xdocs/jk2 configwebcom.xml


> mturk       2004/04/14 23:32:33
>
>   Modified:    jk/xdocs/jk2 configwebcom.xml
>   Log:
>   Update few missing docs. Thanks to Agnus Mezick.
>
>   Revision  Changes    Path
>   1.17      +109 -37
jakarta-tomcat-connectors/jk/xdocs/jk2/configwebcom.xml
>
>   Index: configwebcom.xml
>   ===================================================================
>   RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/xdocs/jk2/configwebcom.xml,v
>   retrieving revision 1.16
>   retrieving revision 1.17
>   diff -u -r1.16 -r1.17
>   --- configwebcom.xml 13 Mar 2004 07:33:24 -0000 1.16
>   +++ configwebcom.xml 15 Apr 2004 06:32:33 -0000 1.17
>   @@ -156,26 +156,26 @@
>                            <th>Default</th>
>                            <th>Description</th>
>                        </tr>
>   -                    <tr>
>   -                        <td>file</td>
>   -                        <td>No default value</td>
>   -                        <td>Name of the file that will be mmapped to
use as shared memory, If set to 'anonymous' use the anonymous shered
memory</td>
>   -                    </tr>
>   -                    <tr>
>   -                        <td>size</td>
>   -                        <td>No default value</td>
>   -                        <td>Deprecated. Size of the file.</td>
>   -                    </tr>
>   -                    <tr>
>   -                        <td>slots</td>
>   -                        <td>256</td>
>   -                        <td>Number of shared memory slots. Set to the
number of child processes</td>
>   -                    </tr>
>   -                    <tr>
>   -                        <td>useMemory</td>
>   -                        <td>0</td>
>   -                        <td>Use process memory instead of shared
memory. Useful for single child mpm's</td>
>   -                    </tr>
>   +                    <tr>
>   +                        <td>file</td>
>   +                        <td>No default value</td>
>   +                        <td>Name of the file that will be mmapped to
use as shared memory, If set to 'anonymous' use the anonymous shered
memory</td>
>   +                    </tr>
>   +                    <tr>
>   +                        <td>size</td>
>   +                        <td>No default value</td>
>   +                        <td>Deprecated. Size of the file.</td>
>   +                    </tr>
>   +                    <tr>
>   +                        <td>slots</td>
>   +                        <td>256</td>
>   +                        <td>Number of shared memory slots. Set to the
number of child processes</td>
>   +                    </tr>
>   +                    <tr>
>   +                        <td>useMemory</td>
>   +                        <td>0</td>
>   +                        <td>Use process memory instead of shared
memory. Useful for single child mpm's</td>
>   +                    </tr>
>                    </table>
>                </p>
>            </section>
>   @@ -346,10 +346,18 @@
>                            <tr>
>                                <td>lb_factor</td>
>                                <td>1</td>
>   -                            <td>
>   -    Load balancing factor to use. At this moment, it'll be set on the
worker,
>   -    but in future it should be possible to use lb on a channel level.
>   -  </td>
>   +                            <td>Load balancing factor to use. The lower
the lb_factor the more often that tomcat will get requests but see
>   +                                "level" below.</td>
>   +                        </tr>
>   +                        <tr>
>   +                            <td>level</td>
>   +                            <td>1</td>
>   +                            <td>Worker Priority.  Valid values are 0-3.
The functioning workers with the lowest level
>   +                                will be checked for the lowest
lb_value, and if found will be run.  The upper level workers are
>   +                                only checked upon failure of all
workers on ALL of the levels below them.  This is very
>   +                                useful for implementing failover
withing a cluster.  You could set the tomcat server local
>   +                                on the same machine as the apache
instance to level 0 and all of the other workers to level 1.
>   +                                This would cause apache to only use the
external tomcats when the local tomcat is down.</td>
>                            </tr>
>                            <tr>
>                                <td>group</td>
>   @@ -359,8 +367,13 @@
>                            <tr>
>                                <td>tomcatId</td>
>                                <td>Automatically set to the localname (
host:port )</td>
>   -                            <td>Must match the JVM route on tomcat
Engine, for load balancing</td>
>   +                            <td>Must match the JVM route on tomcat the
server.xml Engine element, for load balancing</td>
>                            </tr>
>   +                        <tr>
>   +                            <td>route</td>
>   +                            <td>Automatically set to the localname (
host:port )</td>
>   +                            <td>Same as tomcatId</td>
>   +                        </tr>
>                        </table>
>                    </p>
>                </subsection>
>   @@ -409,7 +422,8 @@
>                    </p>
>                </subsection>
>                <subsection name="ajp13">
>   -                <p>Default worker</p>
>   +                <p>Default worker.  If a property is in both the worker
and the channel, you only need to define it in one place.
>   +                    The channel passes down the properties to its
worker.  (at least in the ajp13-channel.socket linkage)</p>
>                    <p>
>                        <table>
>                            <tr>
>   @@ -427,28 +441,39 @@
>                            </tr>
>                            <tr>
>                                <td>tomcatId</td>
>   -                            <td/>
>   -                            <td/>
>   +                            <td>Automatically set to the localname (
host:port )</td>
>   +                            <td>Must match the JVM route on the tomcat
server.xml Engine element, for load balancing</td>
>                            </tr>
>                            <tr>
>                                <td>route</td>
>   -                            <td/>
>   -                            <td/>
>   +                            <td>Automatically set to the localname (
host:port )</td>
>   +                            <td>Same as tomcatId</td>
>                            </tr>
>                            <tr>
>                                <td>group</td>
>   -                            <td/>
>   -                            <td/>
>   +                            <td>lb</td>
>   +                            <td>loadbalanced groups to which this
channel and the associated worker will be added, multivalued. You need to
set it only if you have an advanced setup with multiple clusters.</td>
>   +                        </tr>
>   +                        <tr>
>   +                            <td>lb_factor</td>
>   +                            <td>1</td>
>   +                            <td>Load balancing factor to use. The lower
the lb_factor the more often that tomcat will get requests but see
>   +                                "level" below.</td>
>                            </tr>
>                            <tr>
>                                <td>level</td>
>   -                            <td/>
>   -                            <td/>
>   +                            <td>1</td>
>   +                            <td>Worker Priority.  Valid values are 0-3.
The functioning workers with the lowest level
>   +                                will be checked for the lowest
lb_value, and if found will be run.  The upper level workers are
>   +                                only checked upon failure of all
workers on ALL of the levels below them.  This is very
>   +                                useful for implementing failover
withing a cluster.  You could set the tomcat server local
>   +                                on the same machine as the apache
instance to level 0 and all of the other workers to level 1.
>   +                                This would cause apache to only use the
external tomcats when the local tomcat is down.</td>
>                            </tr>
>                            <tr>
>                                <td>channel</td>
>                                <td/>
>   -                            <td/>
>   +                            <td>Communication channel used by the
worker.  Use the full name of the channel (everything between the
[]'s).</td>
>                            </tr>
>                            <tr>
>                                <td>max_connections</td>
>   @@ -574,7 +599,7 @@
>                        <tr>
>                            <td>level</td>
>                            <td>INFO</td>
>   -                        <td>Log level. Supported: EMERG, ERROR, INFO,
DEBUG</td>
>   +                        <td>Text of the log level. Strings supported:
EMERG, ERROR, INFO, DEBUG</td>
>                        </tr>
>                    </table>
>                </p>
>   @@ -603,5 +628,52 @@
>                <subsection name="logger.apache2">
>                    <p>Logger used in Apache2 servers, it normally in ends
in error.log </p>
>                </subsection>
>   +        </section>
>   +    <section name="How Load Balancing Works">
>   +        <p>The lb_factor and level properties combine to deliver a
flexible static load balancing solution.
>   +            The level property is used to create up to four pools over
workers in descending priority and lb_factor
>   +            is used to weight the workers within a pool.  The lower the
level the more likely the worker is to be used
>   +            and the lower the lb_factor the more likely the worker is
to be used.  Here is how the algorithm is
>   +            currently implemented:</p>
>   +        <p>
>   +(Assume that every worker's lb_value is set to their lb_factor)<br/>
>   +<br/><source>
>   +if (loadbalancer has a route) and (stickysession=1){<br/>
>   +    worker= loadbanlancer.getWorkerForRoute(route)<br/>
>   +    if worker.hasRedirect<br/>
>   +        redirect=worker.redirect<br/>
>   +    else if !worker.hasError<br/>
>   +        return worker<br/>
>   +    }<br/>
>   +<br/>
>   +selectedWorker=null<br/>
>   +foreach lb_level {<br/>
>   +    foreach worker in the level {<br/>
>   +        if worker.isNotWorking<br/>
>   +            continue<br/>
>   +        if selectedWorker == null<br/>
>   +            selectedWorker = worker<br/>
>   +            continue<br/>
>   +        if worker.lb_value &lt; selectedWorker.lb_value<br/>
>   +            selectedWorker = worker<br/>
>   +            continue<br/>
>   +    }<br/>
>   +    if selectedWorker !=null<br/>
>   +        break<br/>
>   +}<br/>
>   +<br/>
>   +Reenable workers in error state if the timeout has passed()<br/>
>   +<br/>
>   +if selectedWorker !=null {<br/>
>   +    selectedWorker.lb_value += selectedWorker.lb_factor<br/>
>   +    if selectedWorker.lb_value > 255 {<br/>
>   +        foreach worker in
load_balancer.workers[selectedWorker.level]<br/>
>   +            worker.lb_value=worker.lb_factor<br/>
>   +        }<br/>
>   +    }<br/>
>   +    return selectedWorker<br/>
>   +}<br/></source>
>   +</p>
>   +
>        </section>
>    </document>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to