TCP MSMQ throughput figures??

109 views
Skip to first unread message

Nathan Lee

unread,
Jun 18, 1998, 3:00:00 AM6/18/98
to

Anyone have any throughput performance figures they would care to share??

I have AWESOME performance from client programs running on a server to
queues local to that SAME server (as one would expect). We run a fair
number of programs in production this way already.

But...

I am also attempting now to run some over-the-LAN client <--> server
tests, and am getting some abysmal numbers (well under 1/80 as many as I
can on the local machine). They are bad enough, in fact, that I think
I'm doing something wrong (although I can't see it).

I can only get through 10 1000-byte messages (and their corresponding
responses) in 3 seconds. That's 3.3 / second, roughly, and seems WAY too
low for what I should be able to pull off, even single-threaded with NO
overlapped I/O.

This is between 2 machines (both PPro200) on the SAME switched-10BaseT
Ethernet segment...no routers in between! The server has 1GB RAM and 4
processors, and I have 64MB and 1 procesor.

I realize RPC isn't cheap, but golly is it really THIS bad? ;D

Suggestions or encouragement, anyone?

--
Nathan Lee (le...@mfldclin.edu)
Team Leader, Network Architecture and Development
Marshfield Clinic (http://www.marshmed.org)
Marshfield, WI

Frank Boyne

unread,
Jun 18, 1998, 3:00:00 AM6/18/98
to

Nathan Lee <le...@mfldclin.edu> wrote in article
<MPG.ff326684...@msnews.microsoft.com>...

> I can only get through 10 1000-byte messages (and their corresponding
> responses) in 3 seconds. That's 3.3 / second, roughly, and seems WAY too

> low for what I should be able to pull off, even single-threaded with NO
> overlapped I/O.

Microsoft has published a whitepaper on performance - go to
http://www.microsoft.com/msmq/ click on the msmq whitepapres link on the
lower right-hand column and look for the paper titled "Optimizing
Performance in a Microsoft Message Queue Server Environment"

> This is between 2 machines (both PPro200) on the SAME switched-10BaseT
> Ethernet segment...no routers in between! The server has 1GB RAM and 4
> processors, and I have 64MB and 1 procesor.

Where are the queues located, and what's the message flow? It sounds like
you have a program send a message to a queue and then look for a response
message in another queue? Remember that with the asynchronous nature of
MSMQ that probably isn't the typical behaviour of an MSMQ program. If you
want synchronous communication between the sender and receiver then MSMQ
might not be your best choice.



> I realize RPC isn't cheap, but golly is it really THIS bad? ;D

I don't think RPC should be involved here. MSMQ Queue managers talk
directly to each other to deliver messages between them. Are your queues
local to the program calling receive?

According to http://support.microsoft.com/support/kb/articles/q178/5/17.asp
RPC is used for remote reads (i.e., a program receiving messages out of a
queue on a remote system). You might get a performance boost by moving the
queues so they are local to the program receiving from them.


Nathan Lee

unread,
Jun 19, 1998, 3:00:00 AM6/19/98
to

In article <01bd9b1a$d9601690$3ce43bc0@mv_boynefg>,
frank...@unisys.com says...

> Nathan Lee <le...@mfldclin.edu> wrote in article
> <MPG.ff326684...@msnews.microsoft.com>...
> > I can only get through 10 1000-byte messages (and their corresponding
> > responses) in 3 seconds. That's 3.3 / second, roughly, and seems WAY too
>
> > low for what I should be able to pull off, even single-threaded with NO
> > overlapped I/O.
>
> Microsoft has published a whitepaper on performance
[snip]

I will certainly do that! Thanks for the pointer!

> I don't think RPC should be involved here. MSMQ Queue managers talk
> directly to each other to deliver messages between them. Are your queues
> local to the program calling receive?
>

Yes. Always sending to remote queues, receiving from local (in my
tests). Our current production systems use UDP (hand-rolled ACK/NAKing
and SEQing) between systems, and MSMQ queues for internal processing.
Fast as the dickens... ;D


> Where are the queues located, and what's the message flow? It sounds like
> you have a program send a message to a queue and then look for a response
> message in another queue? Remember that with the asynchronous nature of
> MSMQ that probably isn't the typical behaviour of an MSMQ program. If you
> want synchronous communication between the sender and receiver then MSMQ
> might not be your best choice.

A very good point. I am looking for a good way to migrate an entire
client-server protocol suite (rolled on top of UDP) to something higher-
level and easier to maintain. Even though I really enjoy Winsock
programming (I'm a systems programmer), but I really wouldn't mind
spending some of my time on some higher-level issues. I know it will
cost some speed, but at this point other realized gains are worth the
effort expended.

Since our UDP exchanges end up (on the server side) in MSMQ queues for
the service programs to handle, I was theorizing that it might be a cool
way to cut out the middleman. Sounds like your suggestion implies that
the design change should be more radical yet.

I'll think hard about it.


THANKS!

Alan Dickman

unread,
Jun 23, 1998, 3:00:00 AM6/23/98
to Nathan Lee

I'm not sure how you are measuring your performance, but it's nothing close
to what I've been able to achieve.

In tests for my book, I was able to send 1000 10 byte express messages
at a rate of over 16,000 msgs per second. This was the elapse time that the
client took to post the messages. The messages were forwarded to the remote
system immediately.

Are you going out for coffee between messages?

Nathan Lee wrote:

> I am also attempting now to run some over-the-LAN client <--> server
> tests, and am getting some abysmal numbers (well under 1/80 as many as I
> can on the local machine). They are bad enough, in fact, that I think
> I'm doing something wrong (although I can't see it).
>

> I can only get through 10 1000-byte messages (and their corresponding
> responses) in 3 seconds. That's 3.3 / second, roughly, and seems WAY too
> low for what I should be able to pull off, even single-threaded with NO
> overlapped I/O.
>

> This is between 2 machines (both PPro200) on the SAME switched-10BaseT
> Ethernet segment...no routers in between! The server has 1GB RAM and 4
> processors, and I have 64MB and 1 procesor.
>

> I realize RPC isn't cheap, but golly is it really THIS bad? ;D
>

> Suggestions or encouragement, anyone?


>
> --
> Nathan Lee (le...@mfldclin.edu)
> Team Leader, Network Architecture and Development
> Marshfield Clinic (http://www.marshmed.org)
> Marshfield, WI

--
Alan Dickman, Chief Technologist, al...@pswtech.com
-- Designing Applications With MSMQ :: From Addison Wesley in August
---- Providing distributed object, transaction processing, deployment,
---- and operational preparedness consulting to customers world-wide
-- Home Office: 1537 Coyote Court, Golden, CO 80403, +1 303 273 5688
-- Headquarters: http://www.psw.com/, +1 800 933 2876, ext. 3113

Reply all
Reply to author
Forward
0 new messages