From takeda.kenji @ lab.ntt.co.jp Wed Sep 30 10:54:14 2015 From: takeda.kenji @ lab.ntt.co.jp (Takeda) Date: Wed, 30 Sep 2015 10:54:14 +0900 Subject: [Ultramonkey-l7-users 602] Re: =?utf-8?b?U29ycnnjgrXjg7zjg5Djg7zjgbjjga7mtYHlhaU=?= In-Reply-To: <5609E30E.202@jig-saw.com> References: <5609E30E.202@jig-saw.com> Message-ID: <009201d0fb22$e87c1450$b9743cf0$@lab.ntt.co.jp> 小林様 コミュニティメンバの竹田と申します。 ご質問いただいていた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_ja/ja/6/uml7-administration_manual_v3.3_ja.txt 4.2.1.3 RealServer 異常時の設定   (2) fallback いずれに関してもmaxconnの使用を避けるような 形になってしまいますが、ご検討ください。 以上、よろしくお願いいたします。 > -----Original Message----- > From: ultramonkey-l7-users-bounces @ lists.osdn.me [mailto:ultramonkey-l7-users-bounces @ lists.osdn.me] On Behalf Of 小 > 林 年伸 > Sent: Tuesday, September 29, 2015 10:02 AM > To: ultramonkey-l7-users @ lists.osdn.me > 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 > > > StartServers 8 > MinSpareServers 5 > MaxSpareServers 20 > ServerLimit 256 > MaxClients 256 > MaxRequestsPerChild 4000 > > ------------------------------------------ > > ================================================= > ?事象 > ================================================= > 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 , 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 , 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 , 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 , 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 , 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/blobs/master/l7vsd/src/virtualservice_tcp.cpp > > virtualservice_tcp.cpp 441行目付近のこの部分がおかしくなってますでしょうか? > ((0 < element.sorry_maxconnection) && ((active_count.get() >= > static_cast(element.sorry_maxconnection))) > > > 長くなりましたが、可能であれば回避する方法をご教授いただけますでしょうか。 > > お手数ですが、何卒よろしくお願いいたします。 > > -- > -------------------------------------------- > ジグソー株式会社 > 小林 年伸 > E-mail:toshinobu.kobayashi @ jig-saw.com > Tel:011-737-0240 Fax:011-737-0241 > 〒060-0808 > 北海道札幌市北区北8条西3丁目32番 > > _______________________________________________ > Ultramonkey-l7-users mailing list > Ultramonkey-l7-users @ lists.osdn.me > http://lists.osdn.me/mailman/listinfo/ultramonkey-l7-users From toshinobu.kobayashi @ jig-saw.com Wed Sep 30 11:34:40 2015 From: toshinobu.kobayashi @ jig-saw.com (=?UTF-8?B?5bCP5p6XIOW5tOS8uA==?=) Date: Wed, 30 Sep 2015 11:34:40 +0900 Subject: [Ultramonkey-l7-users 603] Re: =?utf-8?b?U29ycnnjgrXjg7zjg5Djg7zjgbjjga7mtYHlhaU=?= In-Reply-To: <009201d0fb22$e87c1450$b9743cf0$@lab.ntt.co.jp> References: <5609E30E.202@jig-saw.com> <009201d0fb22$e87c1450$b9743cf0$@lab.ntt.co.jp> Message-ID: <560B4A40.6080105@jig-saw.com> 竹田様 ジグソー小林です。 早速のご確認ありがとうございます。 まずは教えていただきました対処方法を 試してみます。 どうぞよろしくお願いいたします。 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_ja/ja/6/uml7-administration_manual_v3.3_ja.txt > 4.2.1.3 RealServer 異常時の設定 >   (2) fallback > > いずれに関してもmaxconnの使用を避けるような > 形になってしまいますが、ご検討ください。 > > > 以上、よろしくお願いいたします。 > > >> -----Original Message----- >> From: ultramonkey-l7-users-bounces @ lists.osdn.me [mailto:ultramonkey-l7-users-bounces @ lists.osdn.me] On Behalf Of 小 >> 林 年伸 >> Sent: Tuesday, September 29, 2015 10:02 AM >> To: ultramonkey-l7-users @ lists.osdn.me >> 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 >> >> >> StartServers 8 >> MinSpareServers 5 >> MaxSpareServers 20 >> ServerLimit 256 >> MaxClients 256 >> MaxRequestsPerChild 4000 >> >> ------------------------------------------ >> >> ================================================= >> ?事象 >> ================================================= >> 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 , 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 , 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 , 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 , 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 , 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/blobs/master/l7vsd/src/virtualservice_tcp.cpp >> >> virtualservice_tcp.cpp 441行目付近のこの部分がおかしくなってますでしょうか? >> ((0 < element.sorry_maxconnection) && ((active_count.get() >= >> static_cast(element.sorry_maxconnection))) >> >> >> 長くなりましたが、可能であれば回避する方法をご教授いただけますでしょうか。 >> >> お手数ですが、何卒よろしくお願いいたします。 >> >> -- >> -------------------------------------------- >> ジグソー株式会社 >> 小林 年伸 >> E-mail:toshinobu.kobayashi @ jig-saw.com >> Tel:011-737-0240 Fax:011-737-0241 >> 〒060-0808 >> 北海道札幌市北区北8条西3丁目32番 >> >> _______________________________________________ >> Ultramonkey-l7-users mailing list >> Ultramonkey-l7-users @ lists.osdn.me >> http://lists.osdn.me/mailman/listinfo/ultramonkey-l7-users -- -------------------------------------------- ジグソー株式会社 小林 年伸 E-mail:toshinobu.kobayashi @ jig-saw.com Tel:011-737-0240 Fax:011-737-0241 〒060-0808 北海道札幌市北区北8条西3丁目32番