Sto sviluppando un proxy TCP da mettere di fronte a un servizio TCP che dovrebbe gestire tra 500 e 1000 connessioni attive da Internet selvaggio.Quanto sono lenti i socket TCP rispetto alle pipe denominate su Windows per localhost IPC?
Il proxy è in esecuzione sulla stessa macchina del servizio, ed è per lo più trasparente. Il servizio è per la maggior parte inconsapevole del proxy, con l'unica eccezione della notifica del vero indirizzo IP remoto dei client.
Ciò significa che, per ogni socket TCP in ingresso aperto, ci sono altri due socket sul server: il secondo della coppia nel Proxy e quello sul servizio reale dietro al proxy.
Le dimensioni della finestra di invio e di ricezione sui due socket proxy sono impostate su 1024 byte.
Quali sono le implicazioni sulle prestazioni su questo? Quanto è lenta questa configurazione? Dovrei fare qualche sforzo per cambiare il servizio per usare Named Pipes (o un altro meccanismo IPC), o un socket TCP localhost è per la maggior parte un IPC efficiente?
La fusione delle due applicazioni non è un'opzione. In questo momento siamo bloccati con la configurazione dei due processi.
EDIT: La ragione per avere due processo separato sullo stesso hardware è 100% economia. Abbiamo solo un server e non stiamo pianificando di ottenere di più (senza soldi).
Il servizio TCP è un software legacy in Visual Basic 6, che è cresciuto oltre le nostre aspettative. Il proxy è C++. Non abbiamo tempo, denaro e risorse umane per riscrivere e migrare il codice VB6 in un moderno ambiente di programmazione.
Il proxy è il nostro tentativo di attenuare uno specifico problema di prestazioni sul servizio, uno DDoS attack che riceviamo di volta in volta.
Il proxy è open source, and here is the project source code.
Una connessione TCP in-host verrà implementata nel modo più efficiente possibile (leggi: come una pipe locale bidirezionale, o qualcosa di equivalente a quello) su qualsiasi stack di rete moderno che valga la pena, quindi sarei sorpreso (e un po 'deluso da Microsoft) se ci fosse una notevole differenza di prestazioni tra TCP e Named Pipes per questo caso d'uso. –
@JeremyFriesner Sono d'accordo con te, mi piacerebbe presumere che sia il caso di "Windows Server 2008". – vz0