2017-09-17 2 views
1

NodeJSのリクエスト数と.Netコアのパフォーマンステストを行っていましたが、私が期待していたものを正確に見つけました。明らかに.Net Coreのリクエスト数ははるかに高かった。しかし、私が特に興味深いのは、コードを再コンパイルせずに、クライアントがNodeJSサーバーと.Netコアサーバーを介して実際により多くのRAMを使用していたことです。実際にはRAMの使用量の差はかなり大きかったが、.NETコアサーバーよりもNodeJSサーバーのほうがはるかに高い性質が見られた。ネットコア2.0.0および8.3.0 NodeJSクライアントが別のサーバーでより多くのRAMを使用するのはなぜですか?

問題の注水を使用して

。 .Net Coreサーバーでは、最悪の使用状況では480MBから700MBのどこでも使用できます。 NodeJSサーバーでは、PC上で700MB〜1.4GBのRAMを使用します(どちらもCPUを最大限に活用します)。

Flooder code

HttpServer.cs is the actual code that does the work 
Source.cs is where the HttpServer is run in a separate task to allow Console.ReadLine separately. 

Git link to .Net Core server

NodeJS Serverコード

const http = require('http') 

let serv = http.createServer((req, res) => { 
    res.write("Hello!") 
    // res.destroy() // Uncomment to reduce RAM usage, but the point is still valid 
}) 

serv.listen(48435) 

RAM使用量、およびすべてのもののように有意な差を引き起こすどのような、なぜクライアントは次のようになります1つはそれのための罰を受け取りますか?私は、より多くのRAM、プロセッサ、または単により遅いサーバーを使用して理解していますが、クライアントにとって同じコードを実行する同じコードが、場合によってはRAMのほぼ2倍を使用するのはなぜですか?

+1

私が考えることができるのは、node.jsサーバーの場合、クライアントは一度に多くの同時接続を持つということだけです。また、各サーバーでhttpバージョンのサポートを行う必要があります。 1つはhttp/2を実行している可能性があります。 – jfriend00

+0

もっと多くの接続があると思いますか?タスクはC#でマルチスレッド化され、NodeJSは1スレッドを使用します。完成したNodeJSのリクエスト数は約483kで、C#サーバーのリクエスト数は約780kです –

+0

私はちょうどその違いを説明できるいくつかのアイデアを提供しています。 – jfriend00

答えて

0

解決策が見つかりました。問題は、クライアントが本来、無限の要求を作成したことにあります。サーバーがこれらの要求に迅速に応答できるようになればなるほど、クライアント側で処理が速くなりました。したがって、NodeのHTTPサーバーをクラスタリングした後は、RAM使用量が大幅に減少しました。

クラスタリングと

NodeJS速度:935k要求、最低RAMの360メガバイト、最高680メガバイト ネットコア:780K要求、最低のラム580メガバイト、最高800メガバイト NodeJSなしクラスタリング:435k要求、最低RAMの800メガバイト、最高1.4 GB

本当の情報源を把握するのに役立つjfriend00に感謝します。また、処理中にRAM使用量を調べるためにサーバーが(高速のRAMを犠牲にして)「高速」であることを示す良い指標です。

関連する問題