Hi All, Current auto-scaler takes only the 'average' threshold value from a user's auto-scaling policy. Then inside the scaling related drools rules it calculates an upper bound and a lower bound by multiplying the average threshold value by two non-configurable constants.
scaleUp : Boolean() from ((rifReset && (rifPredictedValue > rifAverageLimit * *0.8*)) || (mcReset && (mcPredictedValue > mcAverageLimit * 0.8)) || (laReset && (laPredictedValue > laAverageLimit * 0.8))) scaleDown : Boolean() from ((rifReset && (rifPredictedValue < rifAverageLimit ** 0.1*)) && (mcReset && (mcPredictedValue < mcAverageLimit * 0.1)) && (laReset && (laPredictedValue < laAverageLimit * 0.1))) IMO this is a limitation and we could make these constants configurable via auto-scaling policy. So, I propose following format to the auto-scaling policy: { "id": "autoscale-policy-1", "loadThresholds": { "requestsInFlight": { "upperLimit": 30, "lowerLimit": 5 }, "memoryConsumption": { "upperLimit": 80, "lowerLimit": 50 }, "loadAverage": { "upperLimit": 100, "lowerLimit": 20 } } } Then, we can modify the rule to consider user-defined threshold values when taking the scaling decision. Let me know your thoughts. -- Best Regards, Nirmal Nirmal Fernando. PPMC Member & Committer of Apache Stratos, Senior Software Engineer, WSO2 Inc. Blog: http://nirmalfdo.blogspot.com/