What is Megaphone?

What is Megaphone?
The Megaphone project is about enhancing open source chat software. Specifically, the goal is to allow ejabberd to support 1,000,000 simultaneous users. See The Plan page for more details on how I plan to solve this problem. See the About this Blog page for more details on why I created this blog.

Monday, April 9, 2012

Its Been Fun

Previously...
  • IT ACTUALLY WORKED!
  • I talked a bit about gen_tcp and active mode.
  • Initial results were very disappointing.

I ran across an issue where ECM would only deliver one packet per blob of data given to it.  This works fine if the data blog only contains one megaphone packet, but when the server gets busy, more than one packet can be contained in each blob.  I fixed this problem --- now ECM keeps sending out data until there is nothing left to deliver.  

In addition, megaphone now sends the HTTP status code along with the rest of the data along to ECM.  ECM, in turn, uses that code when it sends a response to a client.

There is still an issue where connections get dropped during high load periods.  In addition, once the error state is reached, I cannot seem to log on using JWChat.  All this leads me to believe there is some problem lurking in ECM.

At this point, I am going to try contacting some people to see if there is an easy solution (HA!) to ejabberd's memory consumption.  Unless ejabberd's memory use can be curtailed, I don't see a lot of value in megaphone --- yes it does bring some value, but not enough to accomplish the goal that I have set (being able to host 1,000,000 users).

In any case, I will put the code for megaphone/ECM up on github in the next few days.  I may also collect some of the insights I have gained during this process.  

Next time: code and insights?

No comments:

Post a Comment