[Mono-devel-list] UDP 40%+ loss

Jason Starin | Giant Head jasonstarin at giant-head.com
Mon Apr 4 11:14:44 EDT 2005


 
 
 Hi Marcus,

  First off, without code, I feel like I'm going into this question blind,
but I do have a similar example that I did find a solution for.

I had a web service that was capturing web requests from several different
forms, it then incremented a database, and then sent confirmation mails as
well as lead emails to different targets, based upon the web data.  I had
all exceptions mailed to me, and it allowed me a little time to figure out
about how to configure my application to work well with xsp.

Here's the general idea:

1.  I made receipt of requests a top priority process, running on a separate
service, so that I always received requests.  I had those requests write to
a common xml file that was hosted in memory.  Whenever my requests exceeded
1000 or so a minute, the service would crash if I was trying to write a file
to disk, so instead, I had a single write at the end of each minute as part
of a separate thread.

2.  Database updates seem to be slow using the ByteFX and the MySql.Data
ADO.net connections.  I built a timer that updated with the common XML file
every 4 minutes.  That reduced the total number of database requests to a
manageable number that gave them plenty of time to finish (all of my
requests seem to take between 9 and 15 seconds to run almost regardless of
their size).

3.  Because mail services (I'm using sendmail on RedHat Fedora Core 2, but I
also tested SMTP on a Win2k3 with Mono box) seemed to flake out on repeated
connections, I batched emails, and sent them in groups, every ten minutes.
If I allowed each process to send an email message, immediately, my dual
processor server seemed to choke on all of the connections, and eventually
XSP would crash and take apache with it.  On Windows, I'd have a great big
collection of emails bogged down in my logs, needing to be resent.

Frankly, I don't think these are bugs, but more along the lines of
enviornmental constraints, that you can adapt to if you map out the process
and look for where things are flaking out.  Perhaps establish a separate log
file to watch each step through your process, and save at the end of your
test?

Send code if you get a chance, I'm interested to see where I can help, and
have you thought about testing your C# app on a windows machine?

Interesting problem,
Jason



 
 From: mono-devel-list-admin at lists.ximian.com
[mailto:mono-devel-list-admin at lists.ximian.com] On Behalf Of
marcusmonaghan at f2s.com
Sent: Monday, April 04, 2005 10:37 AM
To: Mono Help
Subject: [Mono-devel-list] UDP 40%+ loss

All,

I am trying to re-creating a C program in C# mono (as there are more C#
developers in our company now) and it seems it's not behaving in the
expected
way.

The program is very simple. It listens on a multicast group, receives data
and
writes it to a file. The problem is that I'm seeing roughly 40%+ missed
messages when compared to the C program. I ran the C# and C program on the
same
box. On another box I send out 100 messages in 10 second bursts. The C
program
receives all of them whereas the C# program only receive 60 on the first
burst
50 on the second 55 on the third and so on.

I then (just for a laugh) unthrottled the sending program. It sent 51,000
messages, all of which where received by the C program. The c# program
recorded
7152.

Anyone got any ideas? Possibly a bug?

Regards,
Marcus
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list at lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list





More information about the Mono-devel-list mailing list