PeerChannel throttling controls?

How does one properly throttle a PeerNet network when messages are pouring in faster than the receiving nodes can process them

I'm trying to prove whether or not PeerChannel would make a good foundation for publish-subscribe style messaging that is reliable and robust enough for an enterprise.

My initial testing has been very positive. PeerChannel is looking to be super-reliable so far.

Sending 10,000 messages in a 5-node configuration:
0 message loss, 2,500 msgs/min to 4,000 msgs/min per receiving node

Sending 100,000 messages in a 5-node configuration:
0 message loss, 2,500 msgs/min to 4,000 msgs/min per receiving node

Send 1,000,000 messages in a 20-node configuration
Fine for first 2 hours (about 175,000 messages) then all systems run out of memory

Given the last result above, it seems like I need to hold back message sending when the network is overloaded. But how do I detect that condition What is available for a sender or receiver to determine how big the backlog of messages is




Answer this question

PeerChannel throttling controls?

  • Annie24372

    David, this is great data! Thank you for sending!

    Can you tell us:

    1. What is the size of messages you are sending

    2. Is there one sender or multiple senders

    3. Does the sender also go out of memory in addtion to the receivers in the 1M test

    4. Is there any data cache you are building up in the application as well

    5. What is the machine configuration of receivers/senders

    6. How many nodes are you running per machine

    Thanks,

    Ravi


  • Donna M-T

    I would be very interested in hearing the outcomes of your test david, especially when you have it running properly. Do you have a website I can visit for details
  • Rich Hanbidge

    I apologize that this question dropped off our radar. As your question refers to a build that we are no longer tracking and we have made significant changes to the product since then, could you please verify whether your issue still exists with the most recent July CTP of the .NET Framework 3.0. If it does and you still need assistance with it, please reply here.

    Thank you,
    Clemens



  • pallavi

    Hi Madhu,

    what is the message size you are using and what is the text length that you are setting it to

    you may be hitting a reader limitation on the strings in the incoming messages: try setting NetPeerTcpBinding.ReaderQuotas.MaxStringContentLength appropriately.

    Hope this helps,

    -Ram Pamulapati



  • DaSteph

    Is there a size limit for messages on PeerChannel I saw that you have been sending messages > 100 k in size - but my messages fail at sizes far below that. I have tried to set the maxReceivedMessageSize for the binding. I have a simple chat client - similar to MSDN example. But, if the text size exceeds a certain length, message is not sent to the peers. Changing the maxReceivedMessageSize seems to have no effect on the size of the message I can send. I am using the July CTP version.
  • gpspilot

    Hi Andy. I'll continue to post results as we progress (particularly when we have problems that need solving!). As for your web site question, Neudesic (a Microsoft Gold partner) does blog a lot of useful information about WinFX and other MS technologies (blogs.neudesic.com) and we do expect to launch a WinFX site ourselves in the near future where we'll post this kind of data as well as articles and code samples.

    David



  • Sergey Barskiy

    As of the July CTP, PeerChannel is working great and is essentially self-throttling. This is no longer a concern.

  • claudia galimberti

    Yes - you are correct. This is not well documented, but using svcconfigeditor.exe (which is in the ~\Microsoft Visual Studio 8\Common7\IDE - for anyone with the same problem) folder and increasing the ReaderQuota on the binding fixed the problem - thanks.


  • lololon

    Hi Ravi. I've posted my test data below in more complete form and it should answer your questions. I'm just getting started and plan to provide a lot more testing with varying messages sizes and increasing numbers of machines to prove enterprise worthiness of this approach... but first I need to solve this out of memory problem. Any thoughts on how I can manage throughput of the network Our use of PeerChannel hinges on solving that problem.

    Thanks,
    David

    PeerChannel Test Results [Feb CTP] 03/08/06
    Configuration: 5 PubSubClient nodes, same machine, PeerChannel messaging, 150-byte message size
    Machine Start Finish Messages Loss Elapsed time Messages/min
    sales1 (sender) M1 10:53:00 10:55:00 10000 0 2.00 5000
    sales2 M1 10:53:00 10:56:00 10000 0 3.00 3333
    sales3 M1 10:53:00 10:56:00 10000 0 3.00 3333
    sales4 M1 10:53:00 10:56:00 10000 0 3.00 3333
    sales5 M1 10:53:00 10:56:00 10000 0 3.00 3333
    Start Finish Messages Loss Elapsed time Messages/min
    sales1 (sender) M1 10:58:00 11:01:00 10000 0 3.00 3333
    sales2 M1 10:58:00 11:01:00 10000 0 3.00 3333
    sales3 M1 10:58:00 11:02:00 10000 0 4.00 2500
    sales4 M1 10:58:00 11:01:00 10000 0 3.00 3333
    sales5 M1 10:58:00 11:02:00 10000 0 4.00 2500
    Start Finish Messages Loss Elapsed time Messages/min
    sales1 (sender) M1 11:06:40 11:09:15 10000 0 2.58 3871
    sales2 M1 11:06:40 11:09:41 10000 0 3.02 3315
    sales3 M1 11:06:40 11:10:24 10000 0 3.73 2679
    sales4 M1 11:06:40 11:09:41 10000 0 3.02 3315
    sales5 M1 11:06:40 11:10:24 10000 0 3.73 2679
    Start Finish Messages Loss Elapsed time Messages/min
    sales1 (sender) M1 11:24:00 11:26:49 10000 0 2.82 3550
    sales2 M1 11:24:00 11:27:20 10000 0 3.33 3000
    sales3 M1 11:24:00 11:28:02 10000 0 4.03 2479
    sales4 M1 11:24:00 11:27:18 10000 0 3.30 3030
    sales5 M1 11:24:00 11:28:02 10000 0 4.03 2479
    Start Finish Messages Loss Elapsed time Messages/min
    sales1 (sender) M1 12:04:10 12:29:13 100000 0 25.05 3992
    sales2 M1 12:04:10 12:43:56 100000 0 39.77 2515
    sales3 M1 12:04:10 12:45:51 100000 0 41.68 2399
    sales4 M1 12:04:10 12:43:35 100000 0 39.42 2537
    sales5 M1 12:04:10 12:45:47 100000 0 41.62 2403
    Configuration: 5 PubSubClient nodes, 2 machines (2 and 3), PeerChannel messaging, 150-byte message size
    Start Finish Messages Loss Elapsed time Messages/min
    sales1 (M1-sender) M1 18:13:30 18:19:21 10000 0 5.85 1709
    sales2 M2 18:13:30 18:19:21 10000 0 5.85 1709
    sales3 M2 18:13:30 18:19:21 10000 0 5.85 1709
    sales4 (M1) M1 18:13:30 18:19:30 10000 0 6.00 1667
    sales5 M2 18:13:30 18:19:21 10000 0 5.85 1709
    Configuration:20 PubSubClient nodes, 2 machines (10 each), PeerChannel messaging, 150-byte message size
    Start Finish Messages Loss Elapsed time Messages/min
    sales1 (M1-sender) M1 14:12:00
    sales2 (M1) M1 FAILED AFTER 2 HOURS
    sales3 (M1) M1 OUT OF MEMORY
    sales4 (M1) M1 SENT ABOUT 175000 MSGS
    sales5 (M1) M1
    sales6 (M1) M1
    sales7 (M1) M1
    sales8 (M1) M1
    sales9 (M1) M1
    sales10 (M1) M1
    sales11 (M2) M2
    sales12 (M2) M2
    sales13 (M2) M2
    sales14 (M2) M2
    sales15 (M2) M2
    sales16 (M2) M2
    sales17 (M2) M2
    sales18 (M2) M2
    sales19 (M2) M2
    sales20 (M2) M2



  • PeerChannel throttling controls?