Linux マシンで 5 分ごとに cron ジョブを実行しています。ジョブは Java クラスを実行します。
private MongoClient createConnection(int retry,List<ServerAddress> host){
try {
System.out.println("Retrying----------"+retry);
MongoClient client = new MongoClient(host, MongoClientOptions.builder()
.connectionsPerHost(10)
.threadsAllowedToBlockForConnectionMultiplier(5)
.connectTimeout(5000).writeConcern(WriteConcern.NORMAL).build());
client.getDB("admin").command("ping").throwOnError();
retry = 0;
return client;
} catch (Exception e) {
retry++;
if (retry < retryLimit) {
createConnection(retry,host);
} else {
System.out.println("Connection could not be established to host-"+host);
}
return null;
}
}
retry は、ホストに到達できない場合にクライアントの作成を試行できる回数を示す整数値です。
私が渡しているホストリストは -
public static List<ServerAddress> HOST_SCRIPT = new ArrayList<ServerAddress>() {
private static final long serialVersionUID = 1L;
{
try {
add(new ServerAddress("PrimaryHost23", 27017));
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
};
i MongoClient の作成中にコードがスタックします。それはいつも起こるわけではありません。コードは正常に動作し、ローカル マシンで実行してもハングすることはありません。スローされる例外はありません。
最近、Linux マシンの OS をアップグレードしました (CentOS 5 から CentOS 6 へ)。このスクリプトは以前は正常に機能していたため、これが原因でしょうか。助けてください。
よろしく、 ビバフ