Hello, Brendan & Emmanuel, Sorry for joining the discussion too late. I am just interested on the details since we have also Mina-based application with high read/write rates.
Our clients issue queries and wait for respose. A client does not issue new query until it receives a respose. We use single session for a multithreaded client. Emmanuel, as far I understood, IoProcessor loops until it has something to read for a session. When it finishes, it starts writing and writes until it has something to write? Brendan, do your clients interact with the server and do not wait for a response? Did you try two separate sessions, one for incoming messages and another for outgoing ones? Seems like we must also investigate the possibility of separating in/out message queues. Also, when using ExecutorFilter and several IoProcessors for both in and out queues, we, theoretically, may additionally achive speedup due to the load disribution. This is when only read first and only write after that sequence takes place inside a single session (i.e. for session 1 we can read while for session 2 we can write concurrently with different IoProcessors). Emmanuel, is it true: IoProcessor will not forward on to the next outgoing message until its buffer will not be comletely written to the network or system buffer or smth else? If so, having N big responses that must go through the same sessiion and large enough buffer, and, say 40 ms to transfer each, the first client will receive the response in (approx) 40 ms, the next in 80 ms, 3rd in 120 ms, etc. Is it correct? If so, is there a way to have several threads writing to the same session concurrently (since in any way we have multicore CPUs)? What do you think? Antonio