Um bom lugar para começar é com uma ferramenta como netperf. Google para encontrá-lo
- Inicie o binário netserver no seu vhost
-
Do seu cliente, execute netperf:
netperf -H <serverIP> -f M -l 240 -- -s 4194304
-
-f M
(mostra saída em MB / s) -
-l
(comprimento em segundos) -
--
(as opções seguem os dois traços) -
-s
(tamanho do soquete)
-
Esta é uma maneira fácil de encontrar o tamanho de soquete / buffer correto. Por exemplo, o tamanho de soquete padrão no Windows é apenas 8192. Uma cópia usando arrastar e soltar usará esse tamanho padrão e você aumentará em torno de 22 MB / s. Depois de aumentar para 64k, você começará a ver seus 100-120 MB / s. A maioria dos softwares nos dias de hoje permite que você altere isso ou codificará seu ponto ideal testado. Portanto, se estiver usando o winscp, ou o filezilla ou qualquer outro utilitário para essas transferências de arquivos, você deverá verificar seus buffers TCP no Linux e seus buffers do winsock no Windows.
Exemplo do Linux: /etc/sysctl.conf
-
net.ipv4.tcp_rmem = 4194304 4194304 4194304
-
net.ipv4.tcp_wmem = 4194304 4194304 4194304
Windows: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters
-
DefaultReceiveWindow = 65536
-
DefaultSendWindow = 65536
Reinicie
Se você pode rodar o netperf por mais de 120 segundos e não ver o seu vale, mas copiar os dados reais para o disco e ainda vê-lo, então você pode passar para a resolução de problemas do seu disco. Se você tentar vários tamanhos de buffer / soquete e ainda ver a diminuição, meu próximo passo seria uma captura de pacotes.
No vhost:
-
tcpdump -i <interface> -vvv -nn -s0 port 12865 -w /desiredDir/troughTest.cap
-
netserver
- Do cliente:
netperf -H <serverIP> -f M -l 300 -- -s 4194304
Deixe isso funcionar por um tempo e depois ctrl-c ou mate-o quando achar que tem pacotes suficientes. Por último, ctrl-c seu tcpdump, transfira seu arquivo /diret/troughTest.cap para seu laptop / estação de trabalho, instale o wireshark se você ainda não o fez, analise pacotes