SMPPアプリケーションを開発しました。SMS の受信速度は、1 秒あたりわずか 16 SMS です。どうすればこの速度を上げることができますか?
3 に答える
何よりもまず、JRat でアプリケーションのプロファイリングを行うことをお勧めします。最適化する前に、最適化する場所を知る必要があります。
そうは言っても、私もこれを経験しました。私が遭遇した最大のボトルネックはServerPDUEventListener
実装でした。私の最初のバージョンでは、そのクラスのすべての着信 PDU を処理していました。これはそれらへのアクセスをシリアル化し、一部はデータベース アクセスを行っていました。これを解決する方法は、実際にはより詳細な方法で処理したい PDU のスレッドを生成することです。私の場合、これはDELIVER_SM
PDU とSUBMIT_SM_RESP
PDU でしたが、開発している実際のアプリケーションによって異なります。それらを別々のスレッドで処理することで、私のメインServerPDUEventListener
は自由に次の PDU を処理し続けることができました。ボトルネックは、サーバー ソケットの実装に似ていますaccept
。クライアント ソケットを使用するときはいつでも、別の着信接続のリッスンに戻り、別のスレッドで通信を処理する必要があります。
Javaで書かれた、どんな種類のアプリケーションですか?
いくつかのこと 1. 処理に最も時間がかかっている場所を確認します。これは解決策 2 につながります。メッセージをキューに入れ、処理する処理フローを最適化できます。
ハードウェア構成など、他の要因も関係していますが、通常のハードウェアはまともなパフォーマンスを提供します。
まず、すべての着信および発信 SMS を非同期モードで処理します。たとえば、jsmpp lib では、すべてのトラフィックを非同期および同期モードで処理できます。最初のモードはマッハより高速です。
可能であれば、すべての重いビジネス ロジックを個別のスレッドで処理し、可能であればエンタープライズ Java Bean などで処理します。トラフィックが非常に大きく、ビジネス ロジックが重すぎる場合は、ビジネス ロジックに smpp およびエンタープライズ Java Bean で非同期モードを使用すると、アプリケーション アーキテクチャを大幅に改善できます。