private long increase(double currentLimit) {
        if (MAX == currentLimit) {
            return MAX;
        }
        double historyRate = meanOfTopSuccessRates();
        if (currentLimit > historyRate * (1 + SLOW_INCREMENT_RATIO * 120)) {
            // If the current limit is higher enough, which means there is and will be no throttling,
            //  so we can just increase the limit to the maximum.
            logger.info("{} limit is high enough, current limit: {}, history rate: {}, new rate: {}",
                operation, formatRate(currentLimit), formatRate(historyRate), formatRate(MAX));
            return MAX;
        }

        List<Double> newRates = List.of(
            currentLimit + historyRate * FAST_INCREMENT_RATIO,
            currentLimit + historyRate * SLOW_INCREMENT_RATIO,
            historyRate
        );

        // Find 2nd largest new rate
        double newRate = newRates.stream()
            .sorted()
            .skip(1)
            .findFirst()
            .get();
        return (long) Math.min(newRate, MAX);
    }
The maximum request size allowed by the regulator.
Any request larger than this size should be downscaled to this size.
s3stream/src/main/java/com/automq/stream/s3/operator/TrafficRegulator.java