1

外部 MQ キューに公開しようとしているときに、Linux RedHat マシン上の Java アプリの 1 つで異常な遅延が発生しています (これまでに発生したことはありません)。ボックスで簡単なヘルスチェックを行ったところ、CPU/メモリの使用量は問題ないようです。MQ ボックスも非常に優れています。Javaプロセスを再起動しましたが、うまくいきません! straceその後、簡単なスナップショットを取得しましたが、futex()通話でいっぱいです。

なぜ非常に多くのロックが発生するのかについて誰かが手がかりを与えることができるかどうか疑問に思っていました (私はそれが非常に広く開かれた種類の質問であることを知っています. アプリが実際に何をするかによって異なります).

しかし、私は問題についてもう少し洞察を得たいと思っていました。

4

1 に答える 1

2

実際にプロファイリングして、futex 呼び出しがボトルネックであると判断しましたか?

あなたがそうしたと仮定すると、futex() システムコールはミューテックスが競合していることを暗示している可能性があります。FUTEX = 高速ユーザー空間ミューテックス。競合しないミューテックスは、syscall なしでユーザー空間で処理されます。つまり、ロックの競合に問題がある可能性があります。

于 2011-06-12T20:16:26.003 に答える