Flash Media Server: Core is no longer active (update)

In a past few weeks I have been working on a middle sized flash project. While its nature is in multi user communication and it was crucial to do that with low latency, our first choice was of course Flash Media Server. I spent few days by programming server side (fms) and few days on optimizing its performance and debugging and finally it was fast enough to get staged live. Server side was just about calling client methods (client -> fms -> client) and some SharedObjects, but no video nor audio streaming was used. My company dedicated super fast server (4 x quadcore Intel(R) Xeon(R) CPU E7440 @ 2.40GHz, 32 GB ram) just for Flash Media Server so we were able to run it on 16 cores. We installed fms v.3.0.1 r123 with valid unlimited licence on it. And went live.

First, we tried default fms configuration and soon after start master.log (and all other logs) started to grow up. The main content of the log was:

2009-10-07 00:03:31 24962 (i)2581223 Core (8684) is no longer active. -
2009-10-07 00:03:31 24962 (w)2581256 Core (8684) _defaultRoot_:_defaultVHost_:::_1 experienced 1 failure[s]! -
2009-10-07 00:03:31 24962 (i)2581221 Core (10772) started, arguments : -adaptor "_defaultRoot_" -vhost "_defaultVHost_" -app  -inst  -tag "_1" -conf "./conf/Server.xml" -name "_defaultRoot_:_defaultVHost_:::_1". -

Read the rest of this entry »

SharedObject goes RangeError: Error #2006

If you keep getting RangeError: Error #2006: The supplied index is out of bounds. with SharedObject, you probably not gonna fix it. In my case this happend when I tried to write non primitive values too frequently into persistant SharedObject’s properties. After reconnect, before any event from your SharedObject dispatched, you get exception that will cause browser crash.

I was not able to solve it by excluding saving advanced objects, nor by using just simple Objects, AMF0 or AMF3, nor by any other method I imagined. To solve the problem I decided to write only serialized objects (strings) and deserialize again on client after synchronization.