Domanda

Ho scritto un'implementazione del server TCP utilizzando la quale ho creato un'applicazione che funziona come servizio di eco TCP.

Ora voglio testare questo server echo in termini di

  • Quante connessioni può gestire
  • Qual è il tempo di risposta
  • Quanta memoria e CPU utilizza

Puoi suggerire qualsiasi metodo / strumento standard per testare questo server echo. Comprendo che sia l'implementazione del server TCP che quella dell'eco è una pratica abbastanza standard, quindi spero di trovare strumenti consolidati per testarlo.

P.S .: Posso scrivere la mia applicazione di prova ma non voglio farlo perché se vedo qualche problema, devo essere sicuro che è il mio server che lo sta facendo male. Non voglio finire prima di testare il mio client di test.

Ho scritto questa implementazione usando C # e .NET 3.5 anche se credo che non abbia importanza con riferimento alla domanda.

È stato utile?

Soluzione

Ho uno strumento gratuito che potrebbe aiutarti. Lo uso per testare server creati con il mio framework di server C ++. Lo strumento è disponibile qui: http: // www. lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html. Consente di creare un numero configurabile di connessioni al server di destinazione a una velocità configurabile e quindi inviare dati su ciascuna connessione (sempre a una velocità configurabile).

Se trovi che il modo migliore per usarlo è eseguirlo su una macchina diversa dal server (abbastanza ovvio lo so, ma ...) e possibilmente eseguire più copie su più macchine diverse. Se noti che non riesci a effettuare più di circa 4000 connessioni, è molto probabile che devi modificare le impostazioni del registro MAX_USER_PORT sul computer che esegue il client.

Dopo aver verificato il codice TCP, potrebbe essere necessario testare il protocollo supportato dal server. Ho scritto uno strumento di test per questo tipo di situazione in C # che è disponibile su CodeProject ( http: //www.codeproject.com/KB/IP/testingsocketservers.aspx ). Ciò ti consente di scrivere un " plugin " per supportare il protocollo e gestire le cose agnostiche del protocollo (molte connessioni, interrompere i messaggi in modo da ottenere letture frammentate, ecc.) per te. Il design è un design thread-per-connessione piuttosto sgradevole e per un numero maggiore di connessioni faresti meglio a reimplementare qualcosa usando un design asincrono ma ho i miei strumenti C ++ per questo, quindi non sono mai riuscito a cambiare questo programma di test. .

Altri suggerimenti

Nella tua stessa situazione prima, ho usato FunkLoad. Se riesci a scrivere un piccolo client come frammento di codice Python, FunkLoad eseguirà il numero di quelli sul server che desideri e rappresenterà graficamente i risultati:

https://funkload.nuxeo.org/

Un esempio completamente elaborato contro una serie di server di test è il fulcro della seconda edizione del mio libro di programmazione di reti Foundations of Python, nel caso in cui il suo repository di codice sorgente pubblico sia di aiuto:

https://github.com/brandon-rhodes/fopnp/ albero / m / PY2 / chapter07

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top