1

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 へ)。このスクリプトは以前は正常に機能していたため、これが原因でしょうか。助けてください。

よろしく、 ビバフ

4

3 に答える 3

-1

はい、もちろん、実際には、特定の Web サイトのすべてのリンクをフェッチし、Jsoup および jcabi API を使用して css および html 構造を検証するクローラーを Java で作成していましたが、データベースへのリンクを保存していたときに例外がスローされず、データも保存しません。だから私はこれをやった

 catch (MongoException e){
        System.err.print(e.getClass().getName()+": "+e.getMessage());
    }
于 2016-01-19T08:34:01.830 に答える