2017-08-17 13 views
0

私は既存のアプリケーションの概念証明を書いています。ノードJs応答時間が負荷テストで低下する

既存アプリケーションのアーキテクチャ: Soap Webサービスは他のシステムに公開されています。 既存のシステムのテクノロジ・スタック: - Java - > C++ - >ストアド・プロシージャ(Oracle Database) ビジネスロジックのほとんどはストアドプロシージャで記述されています。

質問は、既存のJavaおよびC++レイヤを置き換えるノードjsの概念証明を作成することです。 提案されるアーキテクチャは、Node Js - > Stored procedures(Oracleデータベース)です。

私は質問のカップルがあります:

  1. 概念実証ノードJS中(速達付き)は、応答時間が1秒の下にある第二百人の同時ユーザー/まで正常に動作します。同時ユーザー数が増加すると、応答時間も増加し、1秒を超えます(既存アプリケーションのSLAは1秒未満です)。 アプリケーションはEC2インスタンスにデプロイされます(t2.microおよびm4.largeと同じ結果であり、データベースもRDSインスタンスです)。私もクラスタを使用しようとしましたが、顕著なゲイン性能はありませんでした。

    これを改善して、1000人のユーザー/秒まで応答時間が1秒未満になるようにするにはどうすればよいでしょうか。

  2. このシナリオに適した他の言語/フレームワークはありますか?

+0

質問は何ですか:何が時間がかかりますか?それを見つけて調整してください。おそらく、アプリケーションを調整してからSQLをチューニングし、その後DBのアプローチを調整するという標準に従ってください。そしてネットワークとOSを調整してください。 –

+0

Thanks Christopher。 現在のアーキテクチャでは、すでに望ましい応答時間を達成できているため、DBに問題はないようです。 –

答えて

0

現在のアーキテクチャで希望の応答時間を達成していますか?そうであれば、理論的には、データベースは新しいアーキテクチャでは問題にならないでしょう。

Node.jsサーバーの設定について詳しく教えてください。接続プーリングを使用していますか?その場合、接続数はいくつですか? UV_THREADPOOL_SIZEを何に設定しましたか?

いくつかのNode.jsインスタンスの前にロードバランサを立てて負荷を分散すると考えましたか?

+0

Danさんに感謝します。 私は現在のアーキテクチャで希望の応答時間を達成することができます。だから私はまた、データベースは問題ではないと思う。 はいプールサイズが30の接続プールを使用しています(プールサイズは10〜30で同じ結果が得られます)。 私はノードに新しいので、UV_THREADPOOL_SIZEについてよく知らないので、それを調べます。 LBについては、最初にLBなしで結果を取得して、ノードがそれを処理できるかどうかを確認します。 LBを導入するなどのアーキテクチャに変更を加えずに、自分自身で達成しようとしている現実的なターゲットはそれだけでは機能しませんか? –

+0

Node.jsは、一部の非同期IO操作にスレッドプールを使用します。 node-oracledbはこのスレッドプールを多く使用します。 UV_THREADPOOL_SIZEは、プール内のスレッド数を設定するための環境変数です。最近のほとんどのCPUでは4コアが使用されているため、デフォルトは4です。ただし、デフォルトのままにすると、最大で4つの接続が同時に動作することができます。プールに接続している接続数を30に設定し、それがどのように動作するかを確認してください。より多くのものが常に良いとは限らないので、さまざまな設定で試してみてください。 –

+0

UV_THREADPOOL_SIZEについて説明しているマニュアルhttps://github.com/oracle/node-oracledb/blob/v1.13.1/doc/api.md#numberofthreadsを気にするかもしれません。他のチューニングのヒントについてもチェックしてください。 –

関連する問題