0

jboss 5で実行されるアプリケーションがあり、struts2、JAXB、Apache HTTPクライアントを使用してビジネスロジックの他のサーバーに接続し、oracle dbを選択操作とログの挿入に使用しています。セッション管理に同時ハッシュマップを多用しています。 servletcontext にも大量の静的データがキャッシュされています。現在取得している TPS は約 150 TPS であり、要件は 3000 TPS を取得することです。

  1. これは現実的ですか?
  2. 私が見始めることができるものは何ですか?

現在Java 5を使用しています

ポインタとヘルプをありがとう

4

1 に答える 1

2
  1. コード レベルでボトルネックがどこにあるかを理解するには、JProfiler、yourkit、またはその他のプロファイリング ツールを使用する必要があります。

考えられる場所についてのいくつかの考え:

XML とシリアル化:
1. JAXB でいくつかのパフォーマンスの問題が発生しました。
XML は必須ですか? 私が知っているほとんどの JSON シリアライザーは、パフォーマンスに関しては JAXB よりも優れています。
2.さらに、すべてのデータをシリアル化する必要があり、その一部を一時的にしないようにする必要があるかどうかを考えてください (これも私が遭遇したことです)。3. XML ドキュメント (DOM) を操作すると、パフォーマンスが低下します。


DB:
1. Explain を使用して、オラクル DB クエリを分析します (これがオラクルで呼び出された方法であることを願っています。実行計画が表示され、改善方法を見つけることができるように説明されます)。
2. ストアド プロシージャの使用を検討してください。ストアド プロシージャは Oracle サーバー上でコンパイルされ、パフォーマンスが向上します (生成されたクエリと比較して)。
3. DB で適切なインデックスを使用します。
4. 場合によっては、データの重複も考慮してください (はい、それは醜いことです。私は知っています)。
5. IN と EXISTS などの問題と、どちらを使用すべきかを理解します。

データ アクセス レイヤー:
1. いくつかのエンティティ キャッシュ (つまり、休止状態の第 1 レベルまたは第 2 レベルのキャッシュ、または独自の実装) を使用して、DB への冗長なクエリを回避できるかどうかを確認してください。

6. 並行性 -
十分な情報が提供されていません。
1. 可能であれば、たとえば ReaderWriterLock を使用し、「同期」しないことを検討する必要があります。
2. できるだけ短いコード領域を同期するようにします。

3. JDK 6 に移行します。そこにシンクロナイズドのパフォーマンスが向上したと聞きました。7. 取引:
1. トランザクションは高価なリソースであることを忘れないでください。トランザクションを「読み取り専用」のコード フローで開かないようにしてください。
2. トランザクションはできるだけ短くしてください。

私は何度も何度も続けることができますが、私たちが実際にあなたを導くことができるように、あなたは本当にあなたの結果とシステムについてもっと説明する必要があります.

于 2012-11-12T10:44:15.647 に答える