Your observation is correct.
The 1st parameter is the total number of requests in a specific period of time (specified with the 3rd parameter).
2nd one is derived from the 1st one.
3rd is the length of period, in seconds.
Here, it means:
maximum 101 requests in a period of 1 ...
You are making too many Horizon requests, consider rewriting code that polls Horizon. Setup a queue or use caching for Horizon data.
Horizon rate-limiting behavior is described here.
In order to provide service stability, Horizon limits the number of requests a client can perform within a one hour window. By default this is set to 3600 requests per hour—...
At Horizon, there is a "rate limit" variable, which ensures no more than N requests from same IP in one hour.
X-RateLimit-Limit --- The maximum number of requests that the current client can make in one hour.
X-RateLimit-Reset --- Seconds until a new window starts.
Note that ...
It's either environment variables which you can read from a config file by using a start script (like this one comes along with debian/ubuntu packages) or command line params.
To disable rate limiting you have to set PER_HOUR_RATE_LIMIT=0 (config/env) or add --per-hour-rate-limit 0 (command line).
For docker a configuration file should be located in /opt/...
You can be more specific with the data you are requesting. Make sure you set the cursor parameter correctly so you are not flooded with more data than you need.
For example, if you only want payment data for a specific account, then you should call the Payments for Account endpoint with streaming enabled.
You can disable PER_HOUR_RATE_LIMIT in after horizon 0.15.0.
PER_HOUR_RATE_LIMIT="0" in horizon.env mean disable x-limit*