klesh commented on issue #3756:
URL: 
https://github.com/apache/incubator-devlake/issues/3756#issuecomment-1322116000

   Come to think about the problem, it is more like a Cache Eviction Policy 
problem rather than Binary Exponential Backoff:
   
   In order to find out the Optimal Concurrency Value at any point in time for 
a slow API server in a Production Environment, we need to approach the highest 
possible concurrency without Breaking the Server if possible. BEB is too 
aggressive and it is more likely to take down the Server completely.
   
   Now, let's assume that at time A, the Best Value for the Server is 10000 RPH 
(Request Per Hour),  800 RPH for time B, 6000 RPH for time C, ideally, we want 
our Actual Value to match them perfectly. However, it is impossible since 
nobody including the server itself can predict what would the Best Value be. 
The only thing we can bet on is the Response Lag from the Server, it reflects 
the Server Load, more or less.
   
   So, here is my Plan of Attach:
   
   1. Write a proxy server that could Record/Replay API response
   2. Record a full issues collection from a Jira Server and save the responses 
to some sort of cache
   3. The proxy server should be able to replay the responses in a controllable 
way, like, adding a random Delay to the response which correlated to the Best 
Value, and writing the Delay/BestRPH to the database as the BestValues
   4. Write a RateLimitRegulator that would take samples of the response time, 
adjust the RPH accordingly and write them to the database as the ActualValues 
as well
   5. Pull the BestValues and ActualValues from the database to a Grafana Trend 
Chart, they should look alike and close to each other.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to