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]
