Considerazioni sulla connessione a Server proxy per RDS
Configurazione delle impostazioni di connessione
Per regolare il pooling di connessioni del proxy RDS, è possibile modificare le seguenti impostazioni:
IdleClientTimeout
È possibile specificare per quanto tempo una connessione client può essere inattiva prima che il proxy la chiuda. Il valore predefinito è 1.800 secondi (30 minuti).
Una connessione client è considerata inattiva quando l'applicazione non invia una nuova richiesta entro il tempo specificato dopo il completamento della richiesta precedente. La connessione al database sottostante rimane aperta e viene restituita al pool di connessioni. Pertanto, è disponibile per essere riutilizzata per nuove connessioni client. Se si desidera che il proxy rimuova in modo proattivo le connessioni obsolete, è necessario ridurre il timeout della connessione client inattiva. Se il carico di lavoro stabilisce connessioni frequenti con il proxy, è possibile aumentare il timeout della connessione client inattiva per risparmiare sui costi di creazione delle connessioni.
Questa impostazione è rappresentata dal timeout della connessione client per inattività nella console RDS e nell'impostazione IdleClientTimeout nella AWS CLI e nell'API. Per informazioni su come modificare il valore del campo Idle client connection timeout (Timeout di connessione client inattivo) nella console RDS, consulta AWS Management Console. Per informazioni su come modificare il valore dell'impostazione IdleClientTimeout, consulta il comando della CLI modify-db-proxy o l'operazione API ModifyDBProxy.
MaxConnectionsPercent
Puoi limitare il numero di connessioni che un proxy RDS può stabilire con il database di destinazione. Puoi specificare il limite come percentuale delle connessioni massime disponibili per il tuo database. Questa impostazione è rappresentata dal campo Connection pool maximum connection (Connessioni massime del pool di connessioni) nella console RDS e nell'impostazione MaxConnectionsPercent della AWS CLI o dell'API.
Il valore MaxConnectionsPercent viene espresso come percentuale dell'impostazione max_connections per l'istanza database RDS usata dal gruppo di destinazione. Il proxy non crea tutte queste connessioni in anticipo. Questa impostazione consente al proxy di stabilire queste connessioni in base al carico di lavoro necessario.
Ad esempio, per una destinazione di database registrata con il parametro max_connections impostato su 1000 e il parametro MaxConnectionsPercent impostato su 95, RDS Proxy imposta 950 connessioni come limite massimo per le connessioni simultanee al database di destinazione specificato.
Un effetto collaterale comune del raggiungimento del numero massimo di connessioni al database consentite dal carico di lavoro è un aumento della latenza complessiva delle query e un incremento del valore della metrica DatabaseConnectionsBorrowLatency. È possibile monitorare le connessioni al database attualmente utilizzate e il totale consentito confrontando le metriche DatabaseConnections e MaxDatabaseConnectionsAllowed.
Se imposti questo parametri, segui le best practice riportate di seguito:
Consenti un margine sufficiente per le connessioni per la modifica dello schema del carico di lavoro. Si consiglia di impostare il parametro su un valore superiore di almeno il 30% rispetto all'utilizzo massimo monitorato. Poiché RDS Proxy ridistribuisce le quote di connessione del database su più nodi, le modifiche alla capacità interna potrebbero richiedere un margine di almeno il 30% per connessioni aggiuntive per evitare l'incremento delle latenze di prestito.
RDS Proxy riserva un certo numero di connessioni per il monitoraggio attivo per supportare il failover rapido, l'instradamento del traffico e le operazioni interne. Il parametro
MaxDatabaseConnectionsAllowednon include queste connessioni riservate. Rappresenta il numero di connessioni disponibili per servire il carico di lavoro e può essere inferiore al valore derivato dall'impostazioneMaxConnectionsPercent.Valori
MaxConnectionsPercentminimi consigliatidb.t3.small: 30
db.t3.medium o superiore: 20
Per informazioni su come modificare il valore del campo Connection pool maximum connections (Numero massimo di connessioni del pool di connessioni) nella console RDS, consulta AWS Management Console. Per informazioni su come modificare il valore dell'impostazione MaxConnectionsPercent, consulta il comando della CLI modify-db-proxy-target-group o l'operazione API ModifyDBProxyTargetGroup.
Per informazioni sui limiti di connessione al database, consulta Numero massimo di connessioni di database.
MaxIdleConnectionsPercent
Puoi controllare il numero di connessioni al database inattive che RDS Proxy può mantenere nel pool di connessione. Per impostazione predefinita, Server proxy per RDS considera che una connessione al database nel proprio pool sia inattiva quando non c’è stata alcuna attività sulla connessione per cinque minuti.
Il valore MaxIdleConnectionsPercent viene espresso come percentuale dell’impostazione max_connections per il gruppo di destinazione dell’istanza database RDS. Il valore predefinito è 50% di MaxConnectionsPercent e il limite superiore è il valore di MaxConnectionsPercent. Ad esempio, se MaxConnectionsPercent è 80, il valore predefinito di MaxIdleConnectionsPercent è 40. Se il valore di MaxConnectionsPercent non è specificato, per RDS per SQL Server MaxIdleConnectionsPercent è 5, mentre per tutti gli altri motori il valore predefinito è 50.
Con un valore elevato, il proxy lascia aperta un'alta percentuale di connessioni al database inattive. Con un valore basso, il proxy chiude un'alta percentuale di connessioni al database inattive. Se i carichi di lavoro sono imprevedibili, valuta la possibilità di impostare un valore elevato per MaxIdleConnectionsPercent. In tal modo Server proxy per RDS può soddisfare i picchi di attività senza aprire molte nuove connessioni al database.
Questa impostazione è rappresentata dall'impostazione MaxIdleConnectionsPercent di DBProxyTargetGroup nella AWS CLI e nell'API. Per informazioni su come modificare il valore dell'impostazione MaxIdleConnectionsPercent, consulta il comando della CLI modify-db-proxy-target-group o l'operazione API ModifyDBProxyTargetGroup.
Per informazioni sui limiti di connessione al database, consulta Numero massimo di connessioni di database.
ConnectionBorrowTimeout
Puoi specificare per quanto tempo RDS Proxy attende che una connessione di database nel pool di connessione diventi disponibile per l'uso prima di restituire un errore di timeout. Il valore predefinito è 120 secondi. Questa impostazione si applica quando il numero di connessioni è pari al massimo e quindi non sono disponibili connessioni nel pool di connessioni. Si applica anche quando non è disponibile alcuna istanza database appropriata per gestire la richiesta, ad esempio quando è in corso un’operazione di failover. Utilizzando questa impostazione, è possibile impostare il periodo di attesa migliore per l’applicazione senza modificare il timeout della query nel codice dell’applicazione.
Questa impostazione è rappresentata dal campo Connection borrow timeout (Timeout del prestito della connessione) nella console RDS o nell'impostazione ConnectionBorrowTimeout di DBProxyTargetGroup nella AWS CLI o nell'API. Per informazioni su come modificare il valore del campo Connection borrow timeout (Timeout del prestito della connessione) nella console RDS, consulta AWS Management Console. Per informazioni su come modificare il valore dell'impostazione ConnectionBorrowTimeout, consulta il comando della CLI modify-db-proxy-target-group o l'operazione API ModifyDBProxyTargetGroup.
Connessioni client e database
Le connessioni dall'applicazione a Server proxy per RDS sono note come connessioni client. Le connessioni da un proxy al database sono le connessioni database. Quando si utilizza Server proxy per RDS, le connessioni client terminano sul proxy mentre le connessioni database vengono gestite all'interno di Server proxy per RDS.
Il pool di connessioni lato applicazione può offrire il vantaggio di ridurre la creazione di connessioni ricorrenti tra l’applicazione e Server proxy per RDS.
Considera i seguenti aspetti di configurazione prima di implementare un pool di connessioni lato applicazione:
-
Durata massima della connessione client: Server proxy per RDS applica una durata massima delle connessioni client di 24 ore. Questo valore non è configurabile. Configura il pool con una durata massima della connessione inferiore a 24 ore per evitare interruzioni impreviste delle connessioni client.
-
Timeout di inattività della connessione client: Server proxy per RDS applica un tempo di inattività massimo per le connessioni client. Configura il pool con un valore di timeout di inattività della connessione inferiore all'impostazione di timeout di inattività della connessione client per Server proxy per RDS per evitare interruzioni impreviste della connessione.
Il numero massimo di connessioni client configurate nel pool di connessioni lato applicazione non deve essere limitato all’impostazione max_connections per Server proxy per RDS.
Il pooling consente di prolungare la durata delle connessioni client. In caso di pinning delle connessioni, il pooling delle connessioni client può ridurre l’efficienza del multiplexing. Le connessioni client bloccate tramite pinning ma inattive nel pool di connessioni lato applicazione continuano a mantenere la connessione al database e impediscono che venga riutilizzata da altre connessioni client. Esamina i log del proxy per verificare la presenza di pinning delle connessioni.
Nota
RDS Proxy chiude le connessioni al database all'incirca dopo 24 ore quando non sono più in uso. Il proxy esegue questa operazione indipendentemente dal valore dell'impostazione massima delle connessioni inattive.