Details
-
Type: Sub-task
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: Apponaug
-
Component/s: Admax Deployment Service
-
Labels:None
-
Sprint:Wickford - Sprint 1, Wickford - Sprint 2, Wickford - Sprint 3, Wickford - Sprint 4
Description
Deployments are a bottleneck (not a surprise) and we need to speed them up. The first thing is we're getting many RateExceededError responses and the code waits 60 seconds. Maybe if we didn't hammer the API as hard, we wouldn't get as many, and we most likely only need to wait 10 seconds, or 5 seconds, not 60 seconds. Also, when 20 threads make an API call at the same time and 16 get back the error, all 16 wait, then hammer the API and maybe 12 get back the error.. then 12 wait... so if we stagger/randomized the wait time and the API calls, we we might get less as well.
http://wiki.ri.thesearchagency.com/index.php/Performance/Load_Testing
After that, if it's still not as fast as we would like, we can use JProfiler to see where the bottlenecks are in the deployment process (in the listener, and also JBoss).
Mike H. suggests implementing a mechanism that allows a dynamically-adjustable wait time between Google API calls, using RateExceededErrors as feedback to increase the wait time, and a "time since last error" factor to lower the wait time by some amount/percentage.