속도 제한

rippled 서버는 API 클라이언트가 공용 API에 요청할 수 있는 속도를 제한합니다. 속도 제한은 클라이언트의 IP 주소를 기반으로 하므로 네트워크 주소 변환 뒤에 있는 클라이언트는 공용 IP 주소를 기준으로 제한을 공유하게 됩니다.

Tip:

클라이언트가 관리자로 연결되어 있는 경우에는 속도 제한이 적용되지 않습니다.

클라이언트가 속도 제한에 가까워지면 서버는 "warning": "load" 필드를 API 응답의 최상위 레벨에 추가합니다. 이 경고가 모든 응답에 추가되는 것은 아니지만 서버는 클라이언트의 연결을 끊기 전에 이러한 경고를 여러 번 보낼 수 있습니다.

클라이언트가 전송률 제한을 초과하면 서버는 해당 클라이언트의 연결을 끊고 한동안 클라이언트의 API 주소로부터의 추가 요청을 처리하지 않습니다. 웹소켓과 JSON-RPC API는 서로 다른 연결 해제 메시지를 사용합니다.

웹소켓 API 연결 해제 메시지

WebSocket API의 경우 서버는 연결을 닫고 닫기 메시지와 코드를 제공합니다. 이러한 메시지에 액세스하는 방법은 웹소켓 클라이언트 구현에 따라 다릅니다. 예를 들어 Node.js ws 라이브러리를 사용하는 경우 다음 코드는 연결이 끊어질 때 닫기 이유를 인쇄합니다:

const WebSocket = require('ws')
const ws = new WebSocket('ws://localhost:6007/')
ws.on('close', (code,reason) => {
  console.log("Disconnected. \ncode: ", code, "\nreason: ", reason)
})

// If rate limited, prints:
// Disconnected.
// code:  1008
// reason:  threshold exceeded

속도 제한으로 인해 연결이 닫히는 경우 닫힘 코드는 1008이고 닫힘 메시지는 문자열 임계값 초과입니다.

JSON-RPC 속도 제한 오류

클라이언트가 전송률 제한을 초과하면 서버는 JSON-RPC API 요청의 경우 HTTP 상태 코드 503 서비스를 사용할 수 없음으로 응답합니다. 이 응답에는 서버에 과부하가 걸렸다는 텍스트(JSON이 아님) 본문이 포함됩니다:

503 Service Unavailable

Server is overloaded

요청당 비율

서버는 시간 경과에 따른 요청 횟수를 기준으로 클라이언트의 사용률을 계산하고, 서버가 요청을 처리하기 위해 수행해야 하는 대략적인 작업량을 기준으로 다양한 유형의 요청에 가중치를 부여합니다. 구독 메소드 및 경로 찾기 메소드에 대한 서버의 후속 메시지도 클라이언트의 사용률에 포함됩니다.

사용률은 시간이 지남에 따라 기하급수적으로 떨어지므로 요청을 자동으로 하지 않는 클라이언트는 몇 초에서 몇 분 후에 액세스가 복원됩니다.

Last updated