jMeter を使用して memcached インストールをテストしようとしています (他の機能テストに jMeter を使用しているため、memcached に使用するのが最良の選択肢のようです)。TelnetClient ( org.apache.commons.net.telnet.TelnetClient
) を使用して memcached に接続し、get コマンドを実行しています。
get somekey
接続できますが、応答を読み取ろうとすると、jMeter がハングアップし、再起動する必要があります。これが私のコードです(memcached_serverは私のサーバーのIPです):
try
{
TelnetClient telnet = new TelnetClient();
telnet.connect("memcached_server", 11211);
PrintWriter pw = new PrintWriter(new OutputStreamWriter(telnet.getOutputStream()), true);
String command = "get 2f605845757870234d94ae14ca83c660";
pw.println("get 2f605845757870234d94ae14ca83c660");
BufferedReader br = new BufferedReader(new InputStreamReader(telnet.getInputStream()));
Scanner scan = new Scanner(br);
System.out.println("Hello stackoverflow!!!!");
if(scan.hasNext())
System.out.println("It does have a next: " + scan.toString());
else
System.out.println("It does NOT have a next");
String output = "";
while (scan.hasNext()) {
String line = scan.nextLine();
output += line;
if (line.matches("^END.*$"))
break;
}
System.out.println("Output: " + output);
telnet.disconnect();
}
catch(Exception e)
{
e.printStackTrace();
}
このコードは Eclipse で実行でき、問題なく動作します。jMeter では、BeanShell PostProcessor を使用しています (この memcached テストの前にいくつかのテストが実行されます)。実行するたびに、プログラムが
scan.hasNext()
ライン。プロセスを強制終了するまで、永遠にハングします。toString(input stream) メソッドのような org.apache.commons.io.IOUtils のユーティリティも使用してみましたが、まったく同じ動作が得られます。
何か案は?