ユーザー グレードの PC プライベート コンピューターと Wifi のチャンクを超えない WebSocket のメトリック バットロードを提供します
新しくリリースされた TypeScript ネット サーバー チャレンジ uWebSockets.js
まずはLinux マシンをチャンクに構成する必要があります — 基本的に、/etc/safety/limits.conf を編集して、許可されたファイル制限を取らなければなりません (マシンは異なる場合があります。これが Ubuntu 18.04 です)。 次のトレースを追加します:
comfy nofile 1024000
exhausting nofile 1024000 次に、いくつかのさまざまな変数を分類する必要があります (繰り返しますが、マイレージは異なる場合もあります):
sudo sysctl get.ipv4.tcp_tw_reuse=1
sudo sysctl fs.file-max=1024000
その後、約 50 かそこらまで面積を拡大する必要があります。異なる IP アドレス。 私のWifiアダプターの場合、次の行を実行しました:
{135..185} の i の場合; sudo ip addr add 192.168.0.$i/24 dev wlp3s0; を停止します。 実施した
ただし、理論上の制限は IP アドレスごとに 65k 接続です。適切な制限は合計でより多くの 20k であるため、(50 20k=1 mil) ごとに 20k を結合するために多くのアドレスを費やします。
次に、 と入力して、get サーバーを root としてハイテールします。 sudo -i ulimit -n 1024000 その後 node examples/WebSocket.js 最初に、5kの閉じた接続について考えてみましょう。 uWebSockets.js は、60 秒以上遅延しているすべての WebSocket をフォールして実行するように構成されています。 「idleTimeout」環境は傾いています。 これは、1 つの WebSocket メッセージを 60 秒ごとに 100 万の WebSocket で送信して取得することを積極的に維持する必要があることを示唆しています また、上記のネットワーク グラフで、ping メッセージに関する Web サイトのオンライン トラフィックのスパイクを一目で確認できます。 毎秒少なくとも 16.7k の WebSocket メッセージがサーバーに到達する必要があります。 明らかに、Wifi ネットワークを介してこの基準を効果的に組み立てることはできなくなりました。 接続のペアをドロップしています。 よそよそしい — 995k の有効な WebSocket が無意味な Wifi ネットワーク上で動作するのは、多かれ少なかれ極寒です! サーバー側のCPU使用率は徐々に 0 ~ 2% になり、ユーザーの場所のメモリ使用量は 500 MB になりましたが、マシン全体のメモリ使用量の合計は 4.7 GB になりました。 CPU使用率やメモリ使用率がサーバー側で急上昇することはありませんでしたが、以前は完全に安定していました. K! それでは、山岳銃を実行しましょう。 イーサネット。 サーバーとクライアントを 1 ギガビットのユーザー グレード ルーターに接続し、ハイテールを再検討します: 接続が失われることなく安定しており、Wifi ネットワークは以前は十分ではありませんでしたが、イーサネットは十分です。 すべてが間違いなく安定していたことを明確にするために、クライアントとサーバーを 1 時間放置し、その後、1 億 2000 万の WebSocket メッセージ (16.7k 60 60 2): すべて安定しております。 正直なところ、私はこの記事をサーバー pc プライベート コンピューターで実行中に書いていますが、閉じられたソケットがゼロで乱れがなく、マシンの応答性が非常に優れています。 ストレートなスポーツでも間違いなく火をつけて進めていきます それで、私たちはかなり極寒の信念のスペースをここに完成させました。 これは、安定したイーサネット接続の結果の一部ですが、ルートもサーバースキームに大きく依存します。 この偉業は、さまざまな Node.js スキーム スタックではもはや実現できません。PC のプライベート コンピューターでこれほど多くの WebSocket を調べて保護するほど軽量でパフォーマンスの高いものはありません。 マシンが応答しなくなるまでスワッピングを中止し、ここで ping 評価を停止することをお勧めします: uWebSockets.js を使用すると、この pc プライベート コンピューターでさらに 1,000,000 を超える WebSocket のペアを確実に引き出すことができます。ほとんどの場合、Linux カーネルをさまざまな制限で再コンパイルする必要があります。 ここで、ローステージの埋め込み C パターンに迷い込むことはもうありません。私はそれが正気の解決策だと思います。 ブランドのユニークなイベント、ブランドのユニークな pc プライベート コンピューターを正しく開始し、示唆するあなたのスペースのスケーリングを続行します。 いつでもこのスキームスタックに魅了され、I/O を維持してください。スケーラビリティの複雑さ、または完全な落とし穴に陥るのを回避する必要があります。連絡を取り合うことで解決できることは明らかであり、私たちは企業間で問題について話す立場にあります.読んでくれてありがとう!
(uWebSockets.js フォルダー内).そのくらいです、間違いありません。 クライアント側の設定は同じですが、明らかに大量の IP アドレスを割り当てる必要はありません。 クライアント コンピューターは、 の費用で記述されたシングル スレッドの C クライアントを実行します。 )uSockets. この検討のためのオファー コードはすべて開始オファーであり、クライアントは uWebSockets/benchmarks フォルダーにある「scale_test.c」です。 ハイテールに小さな編集を加えることもできます. 100 万の WebSocket に到達するには少し時間がかかります。必要に応じて、結合バッチを増やし、クライアント側で多くのスレッドを消費することで (さらになど) しかし、ここでは、私たちが魅了されているサーバー側にはもはや関係ありません。 サーバー側は 1 つの単一のスレッドで実行され、接続セクションの間隔またはそれ以降の適切な CPU 使用率がどのような状況下でも見られません: