Hi, I'm using Mina to distribute incoming data from a hardware device to many connected clients. The incoming data are chunks of bytes representing strings. Whenever a new line is detected in a data chunk the row must be extracted, several prefixes (depending on the source channel of the hardware device) must be added to each row and each row must also be persisted to the file system. Each connected client also passes a regular expression filter to the Mina server and only rows matching this filter should be forwarded to the client. There may potentially be a lot of clients connected to the Mina server and the incoming data that should be distributed from the hardware device _may_ come at a rate of several Mbit/s. The problem is that the data flow from the hardware device differs quite a lot. At times a single row is only sent to the Mina server once every minute, at other times it may by several Mbits per second as I've previously mentioned. How do I deal with this situation? I've read in the forum ( http://mina.markmail.org/message/k2t5yx7xaztgykcp?q=write+throughput) that under heavy load the TextLineEncoder (which I'm using but I've modified it slightly) is really quite inefficient because I get LOTS of small objects (strings) that should be sent to the client. A better way suggested by that thread was to create your own Buffer of, say 64k in size, and just flush the whole buffer to the write method when its full. I figure that this would probably work ok when the load is high but what about when the server only receives one message per minute? Should I perhaps have a thread monitoring the buffer and perform a flush on it on a given time interval if it's not full? Any ideas or suggestions? What write buffer size should I be using? A text row is usually about 50 characters long. I'm using Mina 1.1.7.
Thanks Johan
