[Ultramonkey-l7-develop 1118] Re: FW: Sorryサーバーへの流入

Back to archive index

Shinya TAKEBAYASHI sae****@ancie*****
2015年 10月 1日 (木) 09:49:47 JST


竹田さん

  たけばやしです.
  対応ありがとうございます.

  現行のソースではロックせずにインクリメント/デクリメント
していますが,今回の修正でロックを入れる必要はありそうでしょうか.

  ロックはここ以外にも考慮が必要な箇所があるかもしれないので,
今回の不具合への対処という意味ではアンダフローの修正だけで良いと思います.

  いかがでしょうか.


> -----Original Message-----
> From: ultra****@lists*****
> [mailto:ultra****@lists*****] On Behalf Of Takeda
> Sent: Wednesday, September 30, 2015 2:55 PM
> To: ultra****@lists*****
> Subject: [Ultramonkey-l7-develop 1117] FW: Sorryサーバーへの流入
> 
> developの皆様
> 
> 竹田です。
> 
> 昨日usersに寄せられた問合せについてですが、
> 調査をしたところコードレベルで修正が必要なように思えました。
> 
> 以下、原因と対処案です。
> また、原因について認識違いがなければ
> 以下の内容でそのままチケットを発行したいと思いますので、
> ご確認をお願いします。
> 
> 想定される原因:
>  仮想サービスへの同時接続数を示す内部の変数active_count(unsigned long long型)
>>  0の時に減算がかかってラップアラウンドしてしまい
>  unsigned long longの最大値(18446744073709551615)になってしまうことが
>  原因と考えられます。
> 
>  その結果として 同時接続数(active_count) > "maxconn" となってしまい、
>  Sorry状態へ移行したままになると思われます。
> 
>  具体的には、active_countが0の状態において、
>  質問文中の以下の手順を実行するとactive_countを
>  加算する関数(virtualservice_tcp::connection_active)が1回、
>  減算する関数(virtualservice_tcp::connection_inactive)が2回連続で呼び出され
> るため、
>  結果としてラップアラウンドが発生しているようでした。
> 
> >> 2). 上の構成でultramonkeyl7のvipにtelnetコマンドで接続、後続のapacheが
> >> timeoutする60秒以上放置
>  →接続時にconnection_activeが1回, timeoutでconnection_inactiveが1回
> 
> >> 3). 2)の状態からtelnet側で操作を行うと後続がtimeoutしているので何も返っ
> >> てきません
>  →操作を行った時点でconnection_inactiveが1回
> 
> 対処案:
>  active_countがラップアラウンドしないようにチェックを加える。
> 
>  パッチを作成してみましたのでご確認をお願いします。
>  動作検証をしたところひとまず問題は解決されているようでした。
>  ただ、active_countの加減算ごとにロックをかけることになるので
>  性能に結構影響が出るかもしれません。
> 
> 
> 以上、よろしくお願いします。
> 
> 
> -----Original Message-----
> From: 小林 年伸 [mailto:toshi****@jig-s*****]
> Sent: Wednesday, September 30, 2015 11:35 AM
> To: ultra****@lists*****
> Cc: taked****@lab*****
> Subject: Re: Sorryサーバーへの流入
> 
> 竹田様
> 
> ジグソー小林です。
> 
> 早速のご確認ありがとうございます。
> まずは教えていただきました対処方法を
> 試してみます。
> 
> どうぞよろしくお願いいたします。
> 
> 
> On 2015/09/30 10:54, Takeda wrote:
> > 小林様
> >
> > コミュニティメンバの竹田と申します。
> >
> > ご質問いただいていたSorryサーバの件です。
> >
> > 手順およびログを提示いただきありがとうございます。
> > こちらでも試したところ、事象を再現することができました。
> >
> > 詳しい原因は調査中ですが、根本的な解決にあたっては
> > コードを修正しなくてはいけない可能性もあるため、
> > 当面の対処として以下の実施を検討いただけますでしょうか。
> >
> > ○"maxconn"の設定をしない/もしくは"0"(無制限)にする
> >  この設定により、指定数以上の同時接続があった場合に
> >  Sorryサーバに接続するという動作を行わなくします。
> >
> >  なお、接続先のリアルサーバがすべてダウンした場合に関しては
> >  自動的にSorryサーバへの振り分けが行われます。
> >
> >  また、以下のコマンドで手動によりSorryサーバへの
> >  振り分けのオン/オフを切り替えることは可能です。
> >
> >  例)
> >   # l7vsadm -E -t <仮想サービス> -m <プロトコルモジュール> -s <スケジューラ
> >
> >  -f <1:Sorryオン/0:Sorryオフ>
> >
> > ○Sorryサーバを使用せず"fallback"を使用する
> >  本設定は仮想サービスに属するリアルサーバが全て異常となり、
> >  どのリアルサーバにも振り分けられなくなった場合に、
> >  自動的に追加される代替リアルサーバの設定です。
> >  (仮想サーバ毎に設定可能です)
> >
> >  設定方法については管理者マニュアルをご覧ください。
> >
> https://osdn.jp/projects/ultramonkey-l7/docs/uml7-administration_manual_v3.3_j
> a/ja/6/uml7-administration_manual_v3.3_ja.txt
> >    4.2.1.3 RealServer 異常時の設定
> >   (2) fallback
> >
> > いずれに関してもmaxconnの使用を避けるような
> > 形になってしまいますが、ご検討ください。
> >
> >
> > 以上、よろしくお願いいたします。
> >
> >
> >> -----Original Message-----
> >> From: ultra****@lists*****
> >> [mailto:ultra****@lists*****] On Behalf Of 小
> >> 林 年伸
> >> Sent: Tuesday, September 29, 2015 10:02 AM
> >> To: ultra****@lists*****
> >> Subject: [Ultramonkey-l7-users 601] Sorryサーバーへの流入
> >>
> >> 開発者の皆様
> >>
> >> jig-sawの小林と申します。
> >>
> >> ultramonkeyl7-3.1.1、 ultramonkeyl7-3.1.2
> >> であるきっかけで内部的にactive_countが膨大な数になり
> >> 突然Sorryサーバーに流れる事象がありましたので
> >> ご質問させていただいてよろしいでしょうか。
> >>
> >> 以下私の方で確認できた部分です。
> >>
> >> =================================================
> >> ①構成
> >> =================================================
> >> エッジルーター
> >> ↓
> >> ultramonkeyl7-3.1.1 or ultramonkeyl7-3.1.2
> >> OS:CentOS 6.6 64bit
> >> pacemaker, corosyncの冗長構成
> >> ↓
> >> httpリアルサーバー × 2 (apache)
> >> OS:CentOS 5.5 64bit
> >>
> >> ・l7vsd設定 ※ログ部分は省略させていただきます。
> >> ------------------------------------------
> >> #
> >> # l7vsadm setting
> >> #
> >> [l7vsadm]
> >> cmd_interval = 1
> >> cmd_count = 10
> >> con_interval = 1
> >> con_count = 1
> >>
> >> #
> >> # l7vsd setting
> >> #
> >> [l7vsd]
> >> maxfileno = 65535
> >>
> >> #
> >> # virtualservice setting
> >> #
> >> [virtualservice]
> >> session_thread_pool_size    = 32
> >> throughput_calc_interval    = 500
> >> #num_of_core_uses            = 0
> >>
> >> #
> >> # Session Settings
> >> #
> >> [session]
> >> upstream_buffer_size = 8192
> >> downstream_buffer_size = 8192
> >> server_connect_timeout = 5
> >>
> >> [replication]
> >> 使用していません
> >>
> >> [snmpagent]
> >> enable = "false"
> >> ------------------------------------------
> >>
> >> ・l7director設定
> >> ------------------------------------------
> >> # - Monitor Settings
> >> checktimeout     = 5
> >> negotiatetimeout = 5
> >> checkinterval    = 10
> >> retryinterval    = 5
> >> checkcount       = 3
> >>
> >> # - Real Server Operation
> >> quiescent        = yes
> >> #fallback         = 127.0.0.1:80
> >>
> >> # - Monitor Configuration File
> >> configinterval   = 10
> >> autoreload       = yes
> >>
> >> # HTTP
> >> virtual  = 〓vip〓:80
> >>           real=172.20.0.251:80 masq 10
> >>           real=172.20.0.253:80 masq 10
> >>           module      = sessionless --forwarded-for
> >>           sorryserver = 〓sorry srver〓
> >>           scheduler   = lc
> >>           qosup       = 125M
> >>           qosdown     = 125M
> >>           checktype   = connect
> >>           service     = http
> >>           quiescent   = no
> >>           checkcount  = 2
> >>           session_thread_pool_size = 50
> >>           maxconn     = 1000
> >> ------------------------------------------
> >>
> >> ・apache設定 ※timeout値とpreforkモジュール部分のみ抜粋です
> >> ------------------------------------------
> >> Timeout 60
> >> KeepAlive On
> >> MaxKeepAliveRequests 100
> >> KeepAliveTimeout 2
> >>
> >> <IfModule prefork.c>
> >> StartServers       8
> >> MinSpareServers    5
> >> MaxSpareServers   20
> >> ServerLimit      256
> >> MaxClients       256
> >> MaxRequestsPerChild  4000
> >> </IfModule>
> >> ------------------------------------------
> >>
> >> =================================================
> >> ②事象
> >> =================================================
> >> 1). 上の構成でultramonkeyl7のvipにtelnetコマンドで接続
> >> $ telnet 〓vip〓 80
> >> Trying 〓vip〓
> >> Connected to 〓vip〓
> >> Escape character is '^]'.
> >> GET / HTTP/1.0
> >>
> >> 通常通り操作を行えばリアルサーバーのコンテンツが返ってきます。
> >> 以下はl7vsd_virtualserviceのデバッグログです
> >> ----------------------------------------
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700031 active
> >> session thread id = 0x16003f0 〓ホスト名〓 0x7ffd78fc7700
> >> virtualservice_tcp.cpp:457
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700032
> >> pool_session.size = 49 〓ホスト名〓 0x7ffd78fc7700
> >> virtualservice_tcp.cpp:460
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700033
> >> active_session.size = 1 〓ホスト名〓 0x7ffd78fc7700
> >> virtualservice_tcp.cpp:463
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700034
> >> active_count = 0 〓ホスト名〓 0x7ffd78fc7700 virtualservice_tcp.cpp:466
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700007
> >> in_function
> >> : void session_thread_control::startupstream() 〓ホスト名〓
> >> 0x7ffd78fc7700 session_thread_control.cpp:211
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700008
> >> out_function : void session_thread_control::startupstream() :status =
> >> 1
> >> 〓ホスト名〓 0x7ffd78fc7700 session_thread_control.cpp:219
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700011
> >> in_function
> >> : void session_thread_control::startdownstream() 〓ホスト名〓
> >> 0x7ffd78fc7700 session_thread_control.cpp:246
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700012
> >> out_function : void session_thread_control::startdownstream() :
> >> status =
> >> 1 〓ホスト名〓 0x7ffd78fc7700 session_thread_control.cpp:254
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700035 active
> >> session thread id = 0x1610400 〓ホスト名〓 0x7ffd78fc7700
> >> virtualservice_tcp.cpp:512
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700036
> >> pool_session.size = 48 〓ホスト名〓 0x7ffd78fc7700
> >> virtualservice_tcp.cpp:515
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700037
> >> active_session.size = 1 〓ホスト名〓 0x7ffd78fc7700
> >> virtualservice_tcp.cpp:518
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700038
> >> active_count = 0 〓ホスト名〓 0x7ffd78fc7700 virtualservice_tcp.cpp:521
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700039
> >> out_function: void virtualservice_tcp::handle_accept( const
> >> boost::shared_ptr<session_thread_control> , const
> >> boost::system::error_code& err ) 〓ホスト名〓 0x7ffd78fc7700
> >> virtualservice_tcp.cpp:544
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700082
> >> in_function: void virtualservice_tcp::connection_active( const
> >> boost::asio::ip::tcp::endpoint& in ): in = 172.20.0.251:80 〓ホスト名〓
> >> 0x7ffceef02700 virtualservice_tcp.cpp:1706
> >> 2015/09/28 19:03:12 [DEBUG] l7vsd_virtualservice VSD10700083
> >> out_function: void virtualservice_tcp::connection_active() 〓ホスト名〓
> >> 0x7ffceef02700 virtualservice_tcp.cpp:1722
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700084
> >> in_function: void virtualservice_tcp::connection_inactive( const
> >> boost::asio::ip::tcp::endpoint& in ): in = 172.20.0.251:80 〓ホスト名〓
> >> 0x7ffceef02700 virtualservice_tcp.cpp:1738
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700085
> >> out_function: void virtualservice_tcp::connection_inactive() 〓ホスト名
> >> 〓 0x7ffceef02700 virtualservice_tcp.cpp:1774
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700013
> >> in_function
> >> : void session_thread_control::stopdownstream() 〓ホスト名〓
> >> 0x7ffcee501700 session_thread_control.cpp:264
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700014
> >> out_function : void session_thread_control::stopdownstream() : status
> >> =
> >> 0 〓ホスト名〓 0x7ffcee501700 session_thread_control.cpp:271
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700086
> >> in_function: void virtualservice_tcp::release_session( const
> >> tcp_session* session_ptr ): session_ptr = 0x16ea650 〓ホスト名〓
> >> 0x7ffceef02700 virtualservice_tcp.cpp:1790
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700089
> >> pool_session.size = 48 〓ホスト名〓 0x7ffceef02700
> >> virtualservice_tcp.cpp:1810
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700090
> >> active_session.size = 1 〓ホスト名〓 0x7ffceef02700
> >> virtualservice_tcp.cpp:1813
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700091
> >> active_count = 0 〓ホスト名〓 0x7ffceef02700 virtualservice_tcp.cpp:1816
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700092
> >> pool_session.size = 49 〓ホスト名〓 0x7ffceef02700
> >> virtualservice_tcp.cpp:1825
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700093
> >> active_session.size = 0 〓ホスト名〓 0x7ffceef02700
> >> virtualservice_tcp.cpp:1828
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700094
> >> active_count = 0 〓ホスト名〓 0x7ffceef02700 virtualservice_tcp.cpp:1831
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700095
> >> out_function: void virtualservice_tcp::release_session( const
> >> tcp_session* session_ptr ): session_ptr = 0x16ea650 〓ホスト名〓
> >> 0x7ffceef02700 virtualservice_tcp.cpp:1836
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700009
> >> in_function
> >> : void session_thread_control::stopupstream() 〓ホスト名〓
> >> 0x7ffceef02700 session_thread_control.cpp:229
> >> 2015/09/28 19:03:22 [DEBUG] l7vsd_virtualservice VSD10700010
> >> out_function : void session_thread_control::stopupstream() : status =
> >> 0
> >> 〓ホスト名〓 0x7ffceef02700 session_thread_control.cpp:236
> >>
> >>
> >> 2). 上の構成でultramonkeyl7のvipにtelnetコマンドで接続、後続のapacheが
> >> timeoutする60秒以上放置
> >> $ telnet 〓vip〓 80
> >> Trying 〓vip〓
> >> Connected to 〓vip〓
> >> Escape character is '^]'.
> >>
> >> リアルサーバがtimeoutすると以下のログが出力されました
> >> ----------------------------------------
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700027
> >> in_function: void virtualservice_tcp::handle_accept( const
> >> boost::shared_ptr<session_thread_control> , const
> >> boost::system::error_code& err ): err = false, err.message = Success
> >> 〓
> >> ホスト名〓 0x7fcc5ea5d700 virtualservice_tcp.cpp:349
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700031 active
> >> session thread id = 0x1e0dd70 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:457
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700032
> >> pool_session.size = 49 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:460
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700033
> >> active_session.size = 1 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:463
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700034
> >> active_count = 0 〓ホスト名〓 0x7fcc5ea5d700 virtualservice_tcp.cpp:466
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700007
> >> in_function
> >> : void session_thread_control::startupstream() 〓ホスト名〓
> >> 0x7fcc5ea5d700 session_thread_control.cpp:211
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700008
> >> out_function : void session_thread_control::startupstream() :status =
> >> 1
> >> 〓ホスト名〓 0x7fcc5ea5d700 session_thread_control.cpp:219
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700011
> >> in_function
> >> : void session_thread_control::startdownstream() 〓ホスト名〓
> >> 0x7fcc5ea5d700 session_thread_control.cpp:246
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700012
> >> out_function : void session_thread_control::startdownstream() :
> >> status =
> >> 1 〓ホスト名〓 0x7fcc5ea5d700 session_thread_control.cpp:254
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700035 active
> >> session thread id = 0x1e1f890 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:512
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700036
> >> pool_session.size = 48 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:515
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700037
> >> active_session.size = 1 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:518
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700038
> >> active_count = 0 〓ホスト名〓 0x7fcc5ea5d700 virtualservice_tcp.cpp:521
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700039
> >> out_function: void virtualservice_tcp::handle_accept( const
> >> boost::shared_ptr<session_thread_control> , const
> >> boost::system::error_code& err ) 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:544
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700082
> >> in_function: void virtualservice_tcp::connection_active( const
> >> boost::asio::ip::tcp::endpoint& in ): in = 172.20.0.251:80 〓ホスト名〓
> >> 0x7fccba1fc700 virtualservice_tcp.cpp:1706
> >> 2015/09/28 19:14:10 [DEBUG] l7vsd_virtualservice VSD10700083
> >> out_function: void virtualservice_tcp::connection_active() 〓ホスト名〓
> >> 0x7fccba1fc700 virtualservice_tcp.cpp:1722
> >>
> >>
> >> 3). 2)の状態からtelnet側で操作を行うと後続がtimeoutしているので何も返っ
> >> てきません
> >> $ telnet 〓vip〓 80
> >> Trying 〓vip〓
> >> Connected to 〓vip〓
> >> Escape character is '^]'.
> >> GET / HTTP/1.0
> >>
> >> Connection closed.
> >>
> >> この時以下のログが出力されました
> >> ----------------------------------------
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700084
> >> in_function: void virtualservice_tcp::connection_inactive( const
> >> boost::asio::ip::tcp::endpoint& in ): in = 172.20.0.251:80 〓ホスト名〓
> >> 0x7fccba1fc700 virtualservice_tcp.cpp:1738
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700085
> >> out_function: void virtualservice_tcp::connection_inactive() 〓ホスト名
> >> 〓 0x7fccba1fc700 virtualservice_tcp.cpp:1774
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700086
> >> in_function: void virtualservice_tcp::release_session( const
> >> tcp_session* session_ptr ): session_ptr = 0x1dfc850 〓ホスト名〓
> >> 0x7fccba1fc700 virtualservice_tcp.cpp:1790
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700089
> >> pool_session.size = 48 〓ホスト名〓 0x7fccba1fc700
> >> virtualservice_tcp.cpp:1810
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700090
> >> active_session.size = 1 〓ホスト名〓 0x7fccba1fc700
> >> virtualservice_tcp.cpp:1813
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700091
> >> active_count = 18446744073709551615 〓ホスト名〓 0x7fccba1fc700
> >> virtualservice_tcp.cpp:1816
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700092
> >> pool_session.size = 49 〓ホスト名〓 0x7fccba1fc700
> >> virtualservice_tcp.cpp:1825
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700093
> >> active_session.size = 0 〓ホスト名〓 0x7fccba1fc700
> >> virtualservice_tcp.cpp:1828
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700094
> >> active_count = 18446744073709551615 〓ホスト名〓 0x7fccba1fc700
> >> virtualservice_tcp.cpp:1831
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700095
> >> out_function: void virtualservice_tcp::release_session( const
> >> tcp_session* session_ptr ): session_ptr = 0x1dfc850 〓ホスト名〓
> >> 0x7fccba1fc700 virtualservice_tcp.cpp:1836
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700009
> >> in_function
> >> : void session_thread_control::stopupstream() 〓ホスト名〓
> >> 0x7fccba1fc700 session_thread_control.cpp:229
> >> 2015/09/28 19:15:37 [DEBUG] l7vsd_virtualservice VSD10700010
> >> out_function : void session_thread_control::stopupstream() : status =
> >> 0
> >> 〓ホスト名〓 0x7fccba1fc700 session_thread_control.cpp:236
> >>
> >>
> >> 4).その後もう一度1)の通常操作を行うとactive_countが膨大な数になり以後
> >> l7vsdを再起動若しくはバーチャルサービスを消さないかぎりSorryサーバーへ流
> >> され続けます
> >>
> >> この時以下のログが出力されました
> >> ----------------------------------------
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700027
> >> in_function: void virtualservice_tcp::handle_accept( const
> >> boost::shared_ptr<session_thread_control> , const
> >> boost::system::error_code& err ): err = false, err.message = Success
> >> 〓
> >> ホスト名〓 0x7fcc5ea5d700 virtualservice_tcp.cpp:349
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700030
> >> Connection switch Sorry mode. active_session.size = 1,
> >> active_count.get =
> >> 18446744073709551615 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:448
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700031 active
> >> session thread id = 0x1e1f890 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:457
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700032
> >> pool_session.size = 49 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:460
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700033
> >> active_session.size = 1 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:463
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700034
> >> active_count = 18446744073709551615 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:466
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700007
> >> in_function
> >> : void session_thread_control::startupstream() 〓ホスト名〓
> >> 0x7fcc5ea5d700 session_thread_control.cpp:211
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700008
> >> out_function : void session_thread_control::startupstream() :status =
> >> 1
> >> 〓ホスト名〓 0x7fcc5ea5d700 session_thread_control.cpp:219
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700011
> >> in_function
> >> : void session_thread_control::startdownstream() 〓ホスト名〓
> >> 0x7fcc5ea5d700 session_thread_control.cpp:246
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700012
> >> out_function : void session_thread_control::startdownstream() :
> >> status =
> >> 1 〓ホスト名〓 0x7fcc5ea5d700 session_thread_control.cpp:254
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700035 active
> >> session thread id = 0x1e313b0 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:512
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700036
> >> pool_session.size = 48 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:515
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700037
> >> active_session.size = 1 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:518
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700038
> >> active_count = 18446744073709551615 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:521
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700039
> >> out_function: void virtualservice_tcp::handle_accept( const
> >> boost::shared_ptr<session_thread_control> , const
> >> boost::system::error_code& err ) 〓ホスト名〓 0x7fcc5ea5d700
> >> virtualservice_tcp.cpp:544
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700017
> >> in_function
> >> : l7vs::virtualservice_element& virtualservice_base::get_element() 〓ホ
> >> スト名〓 0x7fccb8dfa700 virtualservice_base.cpp:577
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700018 element
> >> struct data, udpmode = TCP, tcp_accept_endpoint = 〓vip〓:80,
> >> udp_recv_endpoint = 0.0.0.0:0, realserver_vector:size = 2,
> >> protocol_module_name = sessionless, schedule_module_name = lc,
> >> protocol_args.size = 1, sorry_maxconnection = 1000, sorry_endpoint =
> >> 〓sorry サーバー〓, sorry_flag = 0, qos_upstream = 15625000, qos_downstream
> >> = 15625000, throughput_upstream = 0, throughput_downstream = 0,
> >> ssl_file_name = , http_total_count = 0, http_get_count = 0,
> >> http_post_count = 0 〓ホスト名〓 0x7fccb8dfa700
> >> virtualservice_base.cpp:626
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700019
> >> out_function : l7vs::virtualservice_element&
> >> virtualservice_base::get_element() 〓ホスト名〓 0x7fccb8dfa700
> >> virtualservice_base.cpp:627
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700017
> >> in_function
> >> : l7vs::virtualservice_element& virtualservice_base::get_element() 〓ホ
> >> スト名〓 0x7fccb8dfa700 virtualservice_base.cpp:577
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700018 element
> >> struct data, udpmode = TCP, tcp_accept_endpoint = 〓vip〓:80,
> >> udp_recv_endpoint = 0.0.0.0:0, realserver_vector:size = 2,
> >> protocol_module_name = sessionless, schedule_module_name = lc,
> >> protocol_args.size = 1, sorry_maxconnection = 1000, sorry_endpoint =
> >> 〓sorry サーバー〓, sorry_flag = 0, qos_upstream = 15625000, qos_downstream
> >> = 15625000, throughput_upstream = 0, throughput_downstream = 0,
> >> ssl_file_name = , http_total_count = 0, http_get_count = 0,
> >> http_post_count = 0 〓ホスト名〓 0x7fccb8dfa700
> >> virtualservice_base.cpp:626
> >> 2015/09/28 19:16:27 [DEBUG] l7vsd_virtualservice VSD10700019
> >> out_function : l7vs::virtualservice_element&
> >> virtualservice_base::get_element() 〓ホスト名〓 0x7fccb8dfa700
> >> virtualservice_base.cpp:627
> >>
> >> 私の見方が違うかもしれませんが
> >> active_countをインクリメントしている部分をみるとloopしていれば
> >> ログも大量に出力されそうなのですがそうはなっておりません。
> >> https://osdn.jp/projects/ultramonkey-l7/scm/git/ultramonkey-l7-v3/blo
> >> bs/master/l7vsd/src/virtualservice_tcp.cpp
> >>
> >> virtualservice_tcp.cpp 441行目付近のこの部分がおかしくなってますでしょうか?
> >> ((0 < element.sorry_maxconnection) && ((active_count.get() >=
> >> static_cast<size_t>(element.sorry_maxconnection)))
> >>
> >>
> >> 長くなりましたが、可能であれば回避する方法をご教授いただけますでしょうか。
> >>
> >>
> >> お手数ですが、何卒よろしくお願いいたします。
> >>
> >> --
> >> --------------------------------------------
> >> ジグソー株式会社
> >> 小林 年伸
> >> E-mail:toshi****@jig-s*****
> >> Tel:011-737-0240  Fax:011-737-0241
> >> 〒060-0808
> >> 北海道札幌市北区北8条西3丁目32番
> >>
> >> _______________________________________________
> >> Ultramonkey-l7-users mailing list
> >> Ultra****@lists*****
> >> http://lists.osdn.me/mailman/listinfo/ultramonkey-l7-users
> 
> 
> --
> --------------------------------------------
> ジグソー株式会社
> 小林 年伸
> E-mail:toshi****@jig-s*****
> Tel:011-737-0240  Fax:011-737-0241
> 〒060-0808
> 北海道札幌市北区北8条西3丁目32番




Ultramonkey-l7-develop メーリングリストの案内
Back to archive index