Hi,
I'm doing some tests to evaluate the performance of my application server.
I'm using a tcp socket server on a single thread (dedicated, I don't use
the main thread), connected with 500 clients installed on different
machines (no clients on the server machine).
What I want to evaluate is the ability of the server to process packets.
For this I configured each client to send about 1000 packets per second
of 4 bytes (about 32Kbps).
I'm using a gigabit switch, so I don't have any bandwidth problem.
In a first test, each client transmits and the server only receives.
In this case, the CPU of the server exceeds 50% (on my dual core
machine), some clients will stop transmitting (WSAEWOULDBLOCK) and if I
analyze the traffic with wireshark, I noticed that the window size of
some of the tcp connections goes to zero.
Letting go of the transmission for several hours, the clients contended
the server. As some clients stopped, the others begin to transmit.
For make worse server performance I also introduced a loop inside the
receive routine like this:
for i: = 0 to 200000 do
Sleep (0);
I believe that the behavior of the server is correct.
In a second test, however, have meant that the server performs the
routing of packets it receives to other clients.
In this case, I make sure that only few clients transmit data (max 6),
while all receive.
The result I get in this scenario is that clients that stops to trasmit,
will not start more.
The behavior gets worse if data are routed also to the socket from which
the data are coming (in this case the CPU is much higher).
The code I use on OnDataAvailable is:
for i: = 0 to fSS.ClientCount-1 do
begin
/ / If fSS.Client [i] <> TWSocketClient (Sender) then
begin
if fSS.Client [i]. State = wsConnected then
fSS.Client [i]. Send (fRxData, lSize)
end;
end;
I would figure out what the best way to route packets.
What I like is that even in this case, clients contended the server
without stalling.
Thanks for the help
--
Ing. Emanuele Bizzarri
Software Development Department
e-works s.r.l.
41011 - Campogalliano - Modena - Italy
tel. +39 059 2929081 int. 23
fax +39 059 2925035
e-mail: [email protected] - http://www.e-works.it
---------------------------------------------------------------------
La presente comunicazione, che potrebbe contenere informazioni riservate e/o
protette da segreto professionale, è indirizzata esclusivamente ai destinatari
della medesima qui indicati. Le opinioni, le conclusioni e le altre
informazioni qui contenute, che non siano relative alla nostra attività
caratteristica, devono essere considerate come non inviate né avvalorate da
noi. Tutti i pareri e le informazioni qui contenuti sono soggetti ai termini ed
alle condizioni previsti dagli accordi che regolano il nostro rapporto con il
cliente. Nel caso in cui abbiate ricevuto per errore la presente comunicazione,
vogliate cortesemente darcene immediata notizia, rispondendo a questo stesso
indirizzo di e-mail, e poi procedere alla cancellazione di questo messaggio dal
Vostro sistema. E' strettamente proibito e potrebbe essere fonte di violazione
di legge qualsiasi uso, comunicazione, copia o diffusione dei contenuti di
questa comunicazione da parte di chi la abbia ricevuta per errore o in
violazione degli scopi della presente.
---------------------------------------------------------------------
This communication, that may contain confidential and/or legally privileged
information, is intended solely for the use of the intended addressees.
Opinions, conclusions and other information contained in this message, that do
not relate to the official business of this firm, shall be considered as not
given or endorsed by it. Every opinion or advice contained in this
communication is subject to the terms and conditions provided by the agreement
governing the engagement with such a client. If you have received this
communication in error, please notify us immediately by responding to this
email and then delete it from your system. Any use, disclosure, copying or
distribution of the contents of this communication by a not-intended recipient
or in violation of the purposes of this communication is strictly prohibited
and may be unlawful.
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be