Please provide a working test application, instead of partial code.

On Mon, 19 May 2008 22:43:46 +0900, Michael Qi <[EMAIL PROTECTED]> wrote:

Hi,
   I am using mina 1.1.7 and try to simulate many client to a server
for stress test.

and I make 50 clientSessoins, each has a SocketConnector, and the
ClientSession.start()  is :
private static ThreadPoolExecutor exService = new ThreadPoolExecutor(20,
                        40, 60L, TimeUnit.SECONDS, new 
ArrayBlockingQueue<Runnable>(30),
                        new ThreadPoolExecutor.DiscardPolicy());

public void start() {
                connector = new SocketConnector(4, exService);
                SocketConnectorConfig scfg = connector.getDefaultConfig();
                scfg.setThreadModel(ThreadModel.MANUAL);
                scfg.setConnectTimeout(15);
                scfg.getFilterChain().addFirst("mmog_protocol_filter",
                                new ProtocolCodecFilter(new 
MMOGCodecFactory()));
                ConnectFuture cf = connector.connect(address, new 
ClientHandler());
                cf.join();

                if (cf.isConnected()) {
                        session = cf.getSession();
                } else {
                        log.error("could not connect cm");
                        return;
                }
                
                Message m = null;
                m = new Message();
                m.setCommand(Message.LOGIN);

                byte[] body = new byte[16];
                byte[] tmp = Util.intToByteArray(streamId);
                int p = 0, q = 0;
                for (q = 0; q < 4; p++, q++) {
                        body[p] = tmp[q];
                }
                tmp = Util.floatToByteArray(x);
                for (q = 0; q < 4; p++, q++) {
                        body[p] = tmp[q];
                }

                tmp = Util.floatToByteArray(y);
                for (q = 0; q < 4; p++, q++) {
                        body[p] = tmp[q];
                }

                tmp = Util.floatToByteArray(0);
                for (q = 0; q < 4; p++, q++) {
                        body[p] = tmp[q];
                }
                m.setBody(body);

                WriteFuture wf = session.write(m);
                wf.join();
        }


The problem is:  I new 50 ClientSession and call start one by one :
for (ClientSession cs : sessions) {
                        cs.start();
                        log.debug("start id = " + s);
                        s++;
}

and the log said :
08 May 19 21:31:44,645 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 0
08 May 19 21:31:44,648 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 1
08 May 19 21:31:44,650 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 2
08 May 19 21:31:44,653 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 3
08 May 19 21:31:44,656 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 4
08 May 19 21:31:44,658 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 5
08 May 19 21:31:44,660 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 6
08 May 19 21:31:44,666 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 7
08 May 19 21:31:44,668 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 8
08 May 19 21:31:44,670 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 9
08 May 19 21:32:44,640 [main] ERROR
com.qihe.study.ClientSession.start(ClientSession.java:64)
com.qihe.study.ClientSession  - could not connect server
08 May 19 21:32:44,640 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 10
08 May 19 21:32:44,655 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 11
08 May 19 21:32:44,640 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 10
08 May 19 21:32:44,655 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 11
08 May 19 21:32:44,660 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 12
08 May 19 21:32:44,664 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 13
08 May 19 21:32:44,672 [main] DEBUG
com.qihe.study.ClientTest.main(ClientTest.java:107)
com.qihe.study.ClientTest  - start id = 14


and then it hang!
after "start id = 9" it hanged too! After a while it said could not
connect to server

Why this? Could you please tell me?

Thank you.


 Regards

QiHe



--
Trustin Lee - Principal Software Engineer, JBoss, Red Hat
--
what we call human nature is actually human habit
--
http://gleamynode.net/

Reply via email to