<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">Looking through the server logs, it is clear that (probably unintended) abuse of the HTTP/HTTPS API is a primary cause of overloading issues with the <a href="http://api.openvehicles.com">api.openvehicles.com</a> server. Some users are issuing the same HTTP API request every 5 or 10 seconds (each time doing a complete expensive SSL negotiation).<div><br></div><div>Accordingly, I’ve committed some simple code to try to limit the impact of this. This is configured on the <a href="http://api.openvehicles.com">api.openvehicles.com</a> server as:</div><div><br></div><div><ol class="MailOutline"><li>On the first connection, each source IP is given an initial quota allowance of 12 requests.</li><li>Every minute, the quota is topped up with another 3 requests (subject to a maximum quota of 24).</li><li>Every HTTP/HTTPS API call reduces the quota by 1.</li><li>Should the quota hit zero, a 20 second delayed 429 (too many requests) response will be sent.</li><li>If no requests are seen for 5 minutes, the quota is cleared.</li></ol></div><div><br></div><div>This allows reasonable use of the API, while fairly sharing the limited resources of this free service. I am only seeing six users currently rate limited by these new quotas, while the CPU utilisation has gone from 100% of one core (pre-quota) to ~50% now (with quota). This implies that just those six users were consuming almost half the server resources.</div><div><br></div><div>Anecdotally, things feel much more snappier now for API v2 users, with server connections completing in under a second.</div><div><br></div><div>Regards, Mark</div><div><br></div></body></html>