Hello all! So here goes. We have a windows service written in c# (.Net 20)
It uses Async Sockets and utilizes the agsXMPP.XML parsing class.
There are two types of clients that connect to this service. We have a DESKTOP client and a WEB CLIENT. The web client connects and sends data to the server which then relays this data to all connected clients. The traffic sent to the clients can be a steady constant mash of data depending on the number of visitors on the website. We have ran memory profilers
and they pin point that System.Net.Sockets.Overlap
pedAsyncRe
sult -> m_UserObject -> System.Byte[] is the cultprit in the massive ram consumption.
Now we removed a certain section of code so now ONLY packets are sent to desktop client when a visitor hits the site, and when a timer removes stale clients and the ram holds @ about 36megs ...but we need to send updates to the clients on UPDATES. Which could in turn have 20 clients (desktop) and maybe lets say 2000 web clients. So each 20 desktop clients would get an update packet for each individual web client every 30 seconds. (when we do activate the update system it works, but the ram shoots up from 36megs to 3gigs in a matter of 30min to an hour and keeps growing and growing till the server locks up for out of memory.
Any help or suggestions would be great ! (I am guesing this is a .net socket issue and that Async BeginSend / BeginReceive are queing and then consuming ram?