それは述べて:Hazelcastパーティション数とスレッドの同時実行
は、パーティション対応の操作を実行するには、操作スレッドの配列が作成されます。
単一の操作スレッドは、複数のパーティションに対して操作を実行します。
各パーティションは1つの操作スレッドにのみ属します。
17ノードのクラスタにそれぞれ16個のパーティションスレッドを持つデフォルトの271個のパーティションがあるとします。パーティションをクラスタ全体に分散すると、すべてのパーティションには1つのスレッドが関連付けられ、各スレッドは1つのパーティションしか持たないことになります(最適なケースと思われます)。
IMapインスタンスを作成するときに、バックアップとキャッシュに近いものを無視すると、クラスタ全体のすべてのマップパーティションで1つのput/get操作を実行することができますか?さらに、MapStoreをアタッチすると、非同期マップストアを作成する方法がないため、バックエンドデータベースに対して271回の同時操作しか実行できません。
これは私が高度に並行しているWebアプリケーションを持っており、最近データストアを切り替えて、その前にHazelcast IMapを実行するようにしたことです。アプリケーションは何千もの同時接続を受け入れ、ほとんどすべての単一の要求は分散マップから少なくともget操作を実行します。私はこれらのエラーの多くを見ている:データベースからフェッチしようとしながら
com.hazelcast.core.OperationTimeoutException: No response for 20000 ms. Aborting invocation! Invocation{serviceName='hz:impl:mapService', op=com.hazelcast.map.impl.operation.GetOperation{identityHash=1003806362, serviceName='hz:impl:mapService', partitionId=244, replicaIndex=0, callId=55212219, invocationTime=1462913274676 (Tue May 10 20:47:54 UTC 2016), waitTimeout=-1, callTimeout=10000, name=..., name=...}, partitionId=244, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=1, callTimeout=10000, target=Address[10.0.2.221]:5701, backupsExpected=0, backupsCompleted=0, connection=Connection [/10.0.2.219:5701 -> /10.0.2.221:14565], endpoint=Address[10.0.2.221]:5701, alive=true, type=MEMBER} No response has been received! backups-expected:0 backups-completed: 0
これは単にパーティションスレッドをブロックMapStoreによって引き起こされていませんか?私はまた、それがNo response for 20000 ms
と言っている間、20秒が経過していないことに注意する必要があります。
私は、IMAPのインスタンスを作成するとき、私は、gnoringのバックアップと近キャッシュ
通常の2x60秒ではなく、20秒のタイムアウトのためにhazelcast.operation.call.timeout.millisを変更しましたか? – pveentjer