GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso ottimizzare il timeout di ritrasmissione TCP iniziale?

Soluzione 1:

No, non puoi; è hardcoded nel kernel. Quindi cambia il kernel e ricompila.

#define TCP_TIMEOUT_INIT ((unsigned)(3*HZ))     /* RFC 1122 initial RTO value   */

Questo è ciò che dovresti ottenere nel tuo include/net/tcp.h.

Ma vedo che qualcuno ha fornito una patch, anche se non l'ho mai provata personalmente

Soluzione 2:

L'impostazione iniziale non dovrebbe influire molto sulle prestazioni complessive, poiché RTO si adatta automaticamente alle condizioni della rete. Se modifichi l'RTO, puoi impostarlo su 1 secondo (ma non inferiore).

C'è una discussione di questo in RFC 1122:

        The following values SHOULD be used to initialize the
        estimation parameters for a new connection:
        (a)  RTT = 0 seconds.

        (b)  RTO = 3 seconds.  (The smoothed variance is to be
             initialized to the value that will result in this RTO).

        The recommended upper and lower bounds on the RTO are known
        to be inadequate on large internets.  The lower bound SHOULD
        be measured in fractions of a second (to accommodate high
        speed LANs) and the upper bound should be 2*MSL, i.e., 240
        seconds.

        DISCUSSION:
             Experience has shown that these initialization values
             are reasonable, and that in any case the Karn and
             Jacobson algorithms make TCP behavior reasonably
             insensitive to the initial parameter choices.

RFC 6298 è un aggiornamento proposto (pubblicato a giugno 2011) che afferma che RTO può essere inizializzato a un valore inferiore (ma non inferiore a 1 secondo) e contiene un'appendice contenente dati che giustificano 1 secondo come valore iniziale ragionevole.


Linux
  1. Come modificare il limite di timeout di MySQL in Linux?

  2. Come posso trovare la versione di Fedora che uso?

  3. Come posso assegnare una password iniziale/predefinita a un utente in Linux?

  4. 8G RAM e SSD:quanto dovrebbe essere grande lo scambio?

  5. Come posso monitorare la lunghezza della coda di accettazione?

Come mettere a punto NGINX per il prossimo 2022?

Come posso ottenere lo stato della tastiera in Linux?

Come posso conoscere il percorso assoluto di un processo in esecuzione?

Come devo determinare l'attuale utilizzo della rete?

Quanto deve essere grande la partizione di swap?

Come posso eseguire il port forwarding con iptables?