0

私のラップトップに比べて比較的強力な EC2 インスタンス (中) に問題がありますが、最近サーバー側でソケット接続を受け入れるアプレットを作成しました。

クライアントはエラスティック ロード バランサーに接続し、任意のサーバーに転送されます。

ラップトップでクライアント アプレットを使用してサーバー側アプレットを試してみましたが、完全に動作します。

ただし、サーバー側のアプレットを Amazon EC2 インスタンスに移動すると、通常、アプレットの CPU 使用率が 100% になります。

これが私がソケットを受け入れる方法です

void listen(int port) throws IOException
{
    newSocket = new ServerSocket(port);

    while (true)
    {
        Socket sock = newSocket.accept();

        PrintStream out = new PrintStream(sock.getOutputStream());

        outputStreamwithName newItem = new outputStreamwithName(out, null);

        outputStreams.put(sock, newItem);

        new ServerThread(this, sock, GUI);
    }
}

このコードが 100% の CPU 負荷を引き起こしているのではないかと思いますが、私のラップトップでは両方のアプレットが最大で 10% しか使用していません。

コードをデバッグしようとしましたが、ブロックしているはずの newSocket.accept() ですべてが停止するため、多くの CPU を使用する必要はありません。

4

0 に答える 0