[Ultramonkey-l7-develop 1034] Re: [RFP] using SO_REUSEPORT on UltraMonkey-L7

Zurück zum Archiv-Index

Hiroaki Nakano nakan****@nttco*****
2014年 2月 3日 (月) 15:51:51 JST


中野@幕張です。

(2014/01/24 5:43), TATEISHI Katsuyuki wrote:
> タテイシです。
> 
> 2014/1/22 Hiroaki Nakano <nakan****@nttco***** 
> <mailto:nakan****@nttco*****>>
> 
>     virtual service自体はGLibの双方向リンクリスト
>     で管理されてるので、配列とかと違って最大値を
>     事前に設定せずともメモリのある限りアイテムは増やせるはず。
>     epollのmax eventとかに関連があるんでしょうか?
> 
> 
> ちょっと横道にそれるんですが・・・半ばひとりごとです。
> 
> v2はオープンできるファイルディスクリプタがmax_eventsで制限され
> ててチューニングに苦労した方も多いかと思います。
> この変数によってv2が同時にオープンできるファイルディスクリプタ
> 数が制限される、と言われていますが、この制限って必要なんですかね?
> 
> この値、iomuxの中でepoll_createとepoll_waitの引数に使われてますが、
> epoll_createでは現在使われませんし、epoll_waitに渡す方はあくまで
> epoll_waitから同時にどれだけのファイルディスクリプタを取り出すか、
> (カーネルに渡すepoll_eventのサイズ)を指定しているだけであってアプ
> リケーション全体のファイルディスクリプタ数がこれで制限されてしま
> うのはおかしい気がしています。
> # epoll_eventのサイズとEPOLL_CTL_ADDできるFDの数は関係ないですよね
> 
> 本来であればepoll_waitでカーネルと一度にやりとりするイベント数
> (max_events)とアプリがオープン可能なファイルディスクリプタ数は
> 個別に管理されていていいと思うのですが・・・
> 
> # iomux.cのレイヤの都合でそうなってるのですかね。

これは調べきれてないのでおいらも疑問のままです。。。
# たぶん、立石さんの言うとおり関係ない感じ。関係あるのって
# /proc/sys/fs/epoll/max_user_watches くらいですよね。


まったく話は変わるんですが、v2をIPとportのソケット生成時に
子プロセス化させるとすると、同じIPとportでprotocol module
だけ違うサービスを後から追加するときに困ることに気が付きました。

v3でもそうですけど、UltraMonkeyL7のバーチャルサービスって、
IPとport以外に、プロトコルモジュールの違いでも別サービスとして
作ることが可能でしたよね。

後から同一IP:portでprotocol moduleだけ違うサービスを追加した場合、
新たに子プロセスを作るのではなく、既存の同一IP:portの子プロセスに
サービスリストを追加してやらなくてはならない・・・
→コマンドを受け付ける親プロセスから、たくさんの子プロセス達へ
 プロセス間通信で情報送ってあげなきゃいけない。
 →一番簡単なのはパイプかな。
  →パイプだとファイルディスクリプタ数の上限の制限受けるな

と連想して、このメール思い出しましたw

パイプ以外に方法あるかなぁ。共有メモリでデータ共有して、
シグナルかメッセージで通知する?
そもそもプロセス間通信しなくてすむ方法がある?(←たぶん無い)

どの方式が一番いいかなぁ。

> -- 
> TATEISHI Katsuyuki <kt****@wheel***** <mailto:kt****@wheel*****>>


-- 
中野 宏朗 (NAKANO Hiroaki)




Ultramonkey-l7-develop メーリングリストの案内
Zurück zum Archiv-Index