私のラップトップに比べて比較的強力な 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 を使用する必要はありません。