Author: pferraro
Date: 2008-10-21 12:07:11 -0400 (Tue, 21 Oct 2008)
New Revision: 1967
Modified:
trunk/mod_cluster/src/main/resources/mod-cluster-jboss-beans.xml
Log:
Refactored load balance factor, source, metric definitions.
Use BusyConnectorsLoadMetric + HeapMemoryUsageLoadMetric by default.
Modified: trunk/mod_cluster/src/main/resources/mod-cluster-jboss-beans.xml
===================================================================
--- trunk/mod_cluster/src/main/resources/mod-cluster-jboss-beans.xml 2008-10-21 15:58:07
UTC (rev 1966)
+++ trunk/mod_cluster/src/main/resources/mod-cluster-jboss-beans.xml 2008-10-21 16:07:11
UTC (rev 1967)
@@ -28,9 +28,9 @@
<!-- Whether to listen for advertise messages -->
<property name="advertise">true</property>
<!-- Multicast address to listen on for advertisements -->
- <property
name="advertiseGroupAddress">${jboss.modcluster.advertise.address,jboss.partition.udpGroup:224.0.1.105}</property>
+ <!--property
name="advertiseGroupAddress">${jboss.modcluster.advertise.address,jboss.partition.udpGroup:224.0.1.105}</property-->
<!-- Port to listen to for advertisements -->
- <property
name="advertisePort">${jboss.modcluster.advertise.address:23364}</property>
+ <!--property
name="advertisePort">${jboss.modcluster.advertise.address:23364}</property-->
<!-- Key the front-end is going to send with advertise messages.
Default is no key no check.
@@ -70,25 +70,64 @@
class="org.jboss.modcluster.load.impl.DynamicLoadBalanceFactorProvider"
mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=LoadBalanceFactorProvider",exposedInterface=org.jboss.modcluster.load.impl.DynamicLoadBalanceFactorProviderMBean.class)</annotation>
+ <constructor>
+ <parameter>
+ <collection
elementClass="org.jboss.modcluster.load.metric.LoadMetricSource">
+ <!-- Define the load metric sources to use in your load balance factor
calculation here -->
+ <value><inject
bean="ThreadPoolLoadMetricSource"/></value>
+ <value><inject
bean="HeapMemoryUsageLoadMetric"/></value><!-- N.B. This load metric
is its own source -->
+ </collection>
+ </parameter>
+ </constructor>
+ <!-- The number of historical load values used to determine load factor -->
<!--property name="history">10</property-->
+ <!-- The exponential decay factor for historical load values -->
<!--property name="decayFactor">2</property-->
</bean>
- <!-- Other metrics sources -->
- <bean name="OperatingSystemLoadMetricSource"
-
class="org.jboss.modcluster.load.metric.impl.OperatingSystemLoadMetricSource"
+ <bean name="ThreadPoolLoadMetricSource"
+
class="org.jboss.modcluster.load.metric.impl.ThreadPoolLoadMetricSource"
mode="On Demand">
<constructor>
- <parameter><inject
bean="DynamicModClusterLoadBalanceFactorProvider"/></parameter>
+ <parameter>
+ <!-- Define the load metrics for this source to use in your load balance
factor calculation here -->
+ <collection
elementClass="org.jboss.modcluster.load.metric.LoadMetric">
+ <value><inject
bean="BusyConnectorsLoadMetric"/></value>
+ </collection>
+ </parameter>
+ <parameter class="javax.management.MBeanServer"><inject
bean="JMXKernel" property="mbeanServer"/></parameter>
+ <!-- Object name pattern for connector thread pools -->
+ <!--parameter>jboss.web:type=ThreadPool,*</parameter-->
</constructor>
</bean>
+ <bean name="BusyConnectorsLoadMetric"
+
class="org.jboss.modcluster.load.metric.impl.BusyConnectorsLoadMetric"
+ mode="On Demand">
+
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=BusyConnectorsLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
+ <!-- The weight determines the significance of this metric with respect to
others in the overall load balance factor calculation -->
+ <property name="weight">2</property>
+ </bean>
+ <bean name="HeapMemoryUsageLoadMetric"
+
class="org.jboss.modcluster.load.metric.impl.HeapMemoryUsageLoadMetric"
+ mode="On Demand">
+
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=HeapMemoryUsageLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
+ <!-- By default, all metrics have a weight of 1 -->
+ <!-- A metric with weight of 0 will be ignored -->
+ </bean>
- <!-- JBossWeb load metric sources -->
+
+ <!-- Other JBossWeb load metric sources -->
<bean name="RequestProcessorLoadMetricSource"
class="org.jboss.modcluster.load.metric.impl.RequestProcessorLoadMetricSource"
mode="On Demand">
<constructor>
- <parameter><inject
bean="DynamicModClusterLoadBalanceFactorProvider"/></parameter>
+ <parameter>
+ <collection
elementClass="org.jboss.modcluster.load.metric.LoadMetric">
+ <value><inject
bean="RequestCountLoadMetric"/></value>
+ <value><inject
bean="ReceiveTrafficLoadMetric"/></value>
+ <value><inject
bean="SendTrafficLoadMetric"/></value>
+ </collection>
+ </parameter>
<parameter class="javax.management.MBeanServer"><inject
bean="JMXKernel" property="mbeanServer"/></parameter>
<!-- Object name pattern for request processors -->
<!--parameter>jboss.web:type=GlobalRequestProcessor,*</parameter-->
@@ -98,131 +137,133 @@
class="org.jboss.modcluster.load.metric.impl.SessionLoadMetricSource"
mode="On Demand">
<constructor>
- <parameter><inject
bean="DynamicModClusterLoadBalanceFactorProvider"/></parameter>
+ <parameter>
+ <collection
elementClass="org.jboss.modcluster.load.metric.LoadMetric">
+ <value><inject
bean="ActiveSessionsLoadMetric"/></value>
+ </collection>
+ </parameter>
<parameter class="javax.management.MBeanServer"><inject
bean="JMXKernel" property="mbeanServer"/></parameter>
<!-- Object name pattern for session managers -->
<!--parameter>jboss.web:type=Manager,*</parameter-->
</constructor>
</bean>
- <bean name="ThreadPoolLoadMetricSource"
-
class="org.jboss.modcluster.load.metric.impl.ThreadPoolLoadMetricSource"
+ <bean name="ConnectionPoolLoadMetricSource"
+
class="org.jboss.modcluster.load.metric.impl.ConnectionPoolLoadMetricSource"
mode="On Demand">
<constructor>
- <parameter><inject
bean="DynamicModClusterLoadBalanceFactorProvider"/></parameter>
+ <parameter>
+ <collection
elementClass="org.jboss.modcluster.load.metric.LoadMetric">
+ <value><inject
bean="ConnectionPoolUsageMetric"/></value>
+ </collection>
+ </parameter>
<parameter class="javax.management.MBeanServer"><inject
bean="JMXKernel" property="mbeanServer"/></parameter>
<!-- Object name pattern for connector thread pools -->
- <!--parameter>jboss.web:type=ThreadPool,*</parameter-->
+
<!--parameter>jboss.jca:service=ManagedConnectionPool,*</parameter-->
</constructor>
</bean>
- <bean name="ConnectionPoolLoadMetricSource"
-
class="org.jboss.modcluster.load.metric.impl.ConnectionPoolLoadMetricSource"
+
+ <!-- Other metrics sources -->
+ <bean name="OperatingSystemLoadMetricSource"
+
class="org.jboss.modcluster.load.metric.impl.OperatingSystemLoadMetricSource"
mode="On Demand">
<constructor>
- <parameter><inject
bean="DynamicModClusterLoadBalanceFactorProvider"/></parameter>
- <parameter class="javax.management.MBeanServer"><inject
bean="JMXKernel" property="mbeanServer"/></parameter>
- <!-- Object name pattern for connector thread pools -->
-
<!--parameter>jboss.jca:service=ManagedConnectionPool,*</parameter-->
+ <parameter>
+ <collection
elementClass="org.jboss.modcluster.load.metric.LoadMetric">
+ <value><inject
bean="AverageSystemLoadMetric"/></value>
+ <value><inject
bean="SystemMemoryUsageLoadMetric"/></value>
+ </collection>
+ </parameter>
</constructor>
</bean>
<!-- System/JVM metrics -->
<bean name="AverageSystemLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.AverageSystemLoadMetric">
+ class="org.jboss.modcluster.load.metric.impl.AverageSystemLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=AverageSystemLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="OperatingSystemLoadMetricSource"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <!--property name="capacity">1.0</property-->
</bean>
<bean name="SystemMemoryUsageLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.SystemMemoryUsageLoadMetric">
+
class="org.jboss.modcluster.load.metric.impl.SystemMemoryUsageLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=SystemMemoryUsageLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="OperatingSystemLoadMetricSource"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <!--property name="capacity">1.0</property-->
</bean>
<bean name="HeapMemoryUsageLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.HeapMemoryUsageLoadMetric">
+
class="org.jboss.modcluster.load.metric.impl.HeapMemoryUsageLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=HeapMemoryUsageLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="DynamicModClusterLoadBalanceFactorProvider"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <!--property name="capacity">1.0</property-->
</bean>
<bean name="ThreadCountLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.ThreadCountLoadMetric">
+ class="org.jboss.modcluster.load.metric.impl.ThreadCountLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ThreadCountLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="DynamicModClusterLoadBalanceFactorProvider"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
+ <!-- This metric requires an explicit capacity, e.g. max capacity of 300 threads
-->
<property name="capacity">300</property>
</bean>
<bean name="ConnectionPoolUsageMetric"
-
class="org.jboss.modcluster.load.metric.impl.ConnectionPoolUsageLoadMetric">
+
class="org.jboss.modcluster.load.metric.impl.ConnectionPoolUsageLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ConnectionPoolUsageLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="ConnectionPoolLoadMetricSource"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <!--property name="capacity">1.0</property-->
+ <!--constructor>
+ <parameter>InUseConnectionCount</parameter>
+ <parameter>MaxSize</parameter>
+ </constructor-->
</bean>
<!-- Analogous to method=R in mod_jk -->
<bean name="RequestCountLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.RequestCountLoadMetric">
+ class="org.jboss.modcluster.load.metric.impl.RequestCountLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=RequestCountLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="RequestProcessorLoadMetricSource"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <property name="capacity">1000</property><!-- maximum
capacity estimated as 1000 requests/sec -->
+ <!--constructor>
+ <parameter>requestCount</parameter>
+ </constructor-->
+ <!-- This metric requires an explicit capacity, e.g. maximum capacity of 1000
requests/sec -->
+ <property name="capacity">1000</property>
</bean>
<!-- Analogous to method=S in mod_jk -->
<bean name="ActiveSessionsLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.ActiveSessionsLoadMetric">
+
class="org.jboss.modcluster.load.metric.impl.ActiveSessionsLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ActiveSessionsLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="SessionLoadMetricSource"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <property name="capacity">1000</property><!-- maximum
capacity estimated at 1000 sessions -->
+ <!--constructor>
+ <parameter>activeSessions</parameter>
+ </constructor-->
+ <!-- This metric requires an explicit capacity, e.g. max capacity of 1000 active
sessions -->
+ <property name="capacity">1000</property>
</bean>
<!-- Analogous to method=T in mod_jk -->
<bean name="ReceiveTrafficLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.ReceiveTrafficLoadMetric">
+
class="org.jboss.modcluster.load.metric.impl.ReceiveTrafficLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ReceiveTrafficLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="RequestProcessorLoadMetricSource"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <property name="capacity">1024</property><!-- maximum
capacity estimated at 1024KB/s -->
+ <!--constructor>
+ <parameter>bytesReceived</parameter>
+ </constructor-->
+ <!-- This metric requires an explicit capacity, e.g. max capacity of 1024 KB/s
-->
+ <property name="capacity">1024</property>
</bean>
<bean name="SendTrafficLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.SendTrafficLoadMetric">
+ class="org.jboss.modcluster.load.metric.impl.SendTrafficLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=SendTrafficLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="RequestProcessorLoadMetricSource"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <property name="capacity">512</property><!-- maximum
capacity estimated at 512KB/s -->
+ <!--constructor>
+ <parameter>bytesSent</parameter>
+ </constructor-->
+ <!-- This metric requires an explicit capacity, e.g. max capacity of 512 KB/s
-->
+ <property name="capacity">512</property>
</bean>
<!-- Analogous to method=B in mod_jk -->
<bean name="BusyConnectorsLoadMetric"
-
class="org.jboss.modcluster.load.metric.impl.BusyConnectorsLoadMetric">
+
class="org.jboss.modcluster.load.metric.impl.BusyConnectorsLoadMetric"
+ mode="On Demand">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=BusyConnectorsLoadMetric",exposedInterface=org.jboss.modcluster.load.metric.LoadMetricMBean.class)</annotation>
- <constructor>
- <parameter><inject
bean="ThreadPoolLoadMetricSource"/></parameter>
- </constructor>
- <!--property name="weight">0</property-->
- <!--property name="capacity">1.0</property-->
+ <!--constructor>
+ <parameter>currentThreadsBusy</parameter>
+ <parameter>maxThreads</parameter>
+ </constructor-->
</bean>
<!-- The core ModClusterService -->
Show replies by date