問題タブ [epoll]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - ファイル記述子を待機しない epoll_wait の代替は?
timerfd_create を使用してタイマーを作成するプログラムがあります (タイマーが期限切れになると、ファイル記述子が設定されます)。
問題は、ファイル記述子を待機するために使用してから、およびepoll_wait
を使用して有効期限をチェックしていることです(以下のプログラムを参照)。fd=revent.data.fd
fd=timer_fd
しかし、これepoll_wait
を行うと、タイマーが期限切れになるまでプログラムがブロックされ、これが発生したくありません..プログラムを実行したいので、定期的にタイマーの期限切れを確認します。それに代わるアプローチはありますか?
以下のプログラムをご覧ください。
}
boost - epoll 再登録: ファイルが存在します
切断直後にクライアントを再接続しようとすると、サーバー側 (fork() を使用したマルチ プロセス サーバー) で発生するこの例外があります。ブーストを使用していますが、マルチプロセスでのデバッグは私だけのものではないため、例外をスローする正確な命令を今のところ理解していません。
ただし、この時点で次のようになります。
何か案は?
アップデート
私は1.52バージョンのasioを使用しているため、フォークをサポートしており、例外は子プロセスにあります。3 回目の再接続試行で発生するため、
- クライアントを接続する
- 切断 (ctrl +c で強制)
- 再接続 (すべて動作)
- 切断する
- このクライアント (または別のクライアント) に再接続すると、例外がスローされます。
これはコードです:
epoll - libevent と epoll、どちらが効率的ですか?
これらは、最高のイベント処理ライブラリの 2 つだと思います。
この2つはどちらも利用者が多いのですが、どちらが優れているのでしょうか?
linux - epollの実装にはRFCがありますか?
多くのネットワークプロトコルには、独自のrfc(コメントの要求)があります。
http / 1.1の場合のように:
http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf
epoll
独自のRFCをオンラインで持っていますか?
asynchronous - マルチスレッド コメット サーバー ライブラリ
マルチスレッドのコメット サーバー ライブラリを探しています。スレッドプール (4 ~ 8 スレッド) で動作する async io (epoll を使用) が必要です。マルチスレッド化されていれば、Tornado は理想的です。
マルチスレッドの理由 接続されているすべてのユーザーからのデータを処理して提供する必要があります-データベースを使用してトルネードインスタンス間で同期できますが、nosqlでさえ速度が大幅に低下します-ほとんどすべてのリクエストがデータベースの書き込み/更新で終了します-非同期を使用してもドライバーは良い考えではありません。すべてをローカルの揮発性メモリに保存できるため、非常に高速になりますが、プロセス間通信を避けるために単一のプロセスで実行する必要があります。スケーリングする必要はありません-単一のボックスで十分です-しかし、高速でなければなりません。一部のデータは MongoDB に保存されますが、mongo クエリの数は通常のリクエストの 5% 程度になります。
そして重要なこと - セマフォ (および他の高レベルのアプローチ) は私にとってロケット科学ではないので、同期を恐れていません。
要件:
- 非同期IO
- ノンブロッキング
- 数千の同時接続
- 速い
- 基本的な HTTP 機能 (GET、POST、Cookie)
- 要求を非同期に処理する機能 (何かを実行する、コールバックを使用した非同期呼び出し (データベース クエリなど)、コールバックを処理する、データを返す)
- スレッドプール
- C++/Java/Python
- シンプルで軽量
async mongo ドライバーもあるといいですね
私はBoost ASIOを調べましたが、必要なことを実行できるようです-しかし、アプリケーションに集中したい-httpリクエスト処理を記述しません。
Tornado(理想的だがシングルスレッド)、Simple(リクエストを非同期に処理し、非同期呼び出し後にデータを返すことができるかどうかわからない)、BOOST ASIO(非常に素晴らしいが低レベルすぎる)について読んだ
c - epoll メッセージ サーバー
epoll を使用してメッセージ サーバーを作成したいと考えています。複数のデバイスがサーバーに接続し、簡単なテキスト メッセージを交換します。私はこれについてあまり経験がありません。これに関連する参照やチュートリアルを提供していただければ幸いです。
Cと一緒に働きたいです。よろしくお願いします。
リー
select - epoll VS select
epollとselectの違いを理解するために、ネットワークに関する本を2冊読んだことがありますが、この概念については少ししか取り上げていません。皆さんが私に詳細の重要な違いを教えていただければ幸いです。
前もって感謝します
c - 1 つの nginx ワーカー プロセスは、2 つのリクエストを同時に処理しますか、それとも 1 つずつ処理しますか?
フィルタ チェーンの非常に優れた点は、各フィルタが前のフィルタの終了を待たないことです。Unix パイプラインのように、前のフィルターの出力を生成時に処理できます。(ここから)
上記は、各フィルターの最後にあるそのようなコードについて話していると思います。
つまり、nginx はフィルターを 1 つずつチェーンします。ただし、各フィルターの最後にあるため、現在のフィルターが完了するまで待機する必要があります。nginx がどうやってeach filter doesn't wait for the previous filter to finish
.
したがって、上記はnginxフィルターの同時実行性についてであり、次はnginxリクエスト処理の同時実行性についてです:
私たちが知っているように、nginxはepoll
リクエストを処理するために使用します:
上記のようなコードでは、nginx が 2 つのリクエストを同時に処理できるとは思えません。1 つずつしか処理できません (それぞれhandler
が十分な速さでジョブを終了するため、次のリクエストはすぐに処理されます)。
または、私が見逃している落とし穴はありますか?
linux - epoll は、同じ fd をリッスンしているすべてのプロセスに通知しますか?
fork()
同じ fd セットでリッスンしている複数のサブプロセスがあります。
それらすべてに通知されますか、それとも 1 つだけ通知されますか?
c++ - epollはudpクライアントにとって悪い考えですか?
epollを使用してLinuxサーバーを作成しました。そして、クライアントがudpパケットを使用することに気づきました...
コードから「リッスン」部分を消去したところ、機能しているようです。しかし、私は自分が直面するかもしれない隠れた問題や問題があるのではないかと思っていました。
また、クライアントがudpパケットを送信している場合、これはサーバーにepollを使用するのは悪い考えですか?