Nirmal Fernando created STRATOS-645:
---------------------------------------
Summary: Allowing users to configure an upper and a lower limit of
threshold values
Key: STRATOS-645
URL: https://issues.apache.org/jira/browse/STRATOS-645
Project: Stratos
Issue Type: Improvement
Components: Autoscaler
Affects Versions: 4.0.0
Reporter: Nirmal Fernando
Assignee: Nirmal Fernando
Fix For: 4.1.0
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.
--
This message was sent by Atlassian JIRA
(v6.2#6252)