[PHP-users 18125]Re: 持続的接続の接続上限秒数と接続数上限はどうやって指定する?
Y.Watanabe
yuw @ msj.biglobe.ne.jp
2003年 9月 30日 (火) 12:45:37 JST
渡辺です。
"tatsuya matsuyama" wrote on 2003/09/26 07:17
with Subject: [PHP-users 18084] 持続的接続の接続上限秒数と接続数上限はどうや
って指定する?
>RedHat7.3j(FTP版)+apache1.3.26+php4.2.4dev(=国際化版)+freeTDS0.61を使用
しています。
(略)
>ユーザーの使用頻度が上がるにつれ
>バックエンドのSQLserver7.0とのconnect/disconnectの負荷が
>気になるようになりました。
(略)
>http://php.planetmirror.com/manual/ja/features.persistent-connections.php
>を読んだのですがよく分からない点があるので教えて下さい。
>
>1.
>文中の警告欄にある
>「テー ブルロックやトランザクションを使用するスクリプトでは持続的接続を使用
せず、問題を完全に避けて通ることです」とありますが、
>この意味は、「insertなどでは持続的接続を使用せず、selectなどに使用する」と
いうとらえ方でよいでしょうか?
うーん。たぶんそうじゃないかなぁ・・・?^^;;)
(この質問に対しては僕はちょっとはっきり言えないっす^^;)
>2.接続の切り方もしくは制限の方法は?
>php.iniで
>mssql.max_persistent = 75
>mssql.max_links = 90
>としてテストしてみたところ確かに効果は体感できるのですが、
>SQLserver(EnterpriseManager)で接続数を確認すると20程度しかありません。
>しかも最初に持続した接続がずっといすわりつづける(他のユーザーが操作しても
>そのユーザー名の接続が現れない)ようです。
>持続的接続の接続の上限はどこで設定するのでしょうか?
>また、max_persistent > SQL接続数となるのは何故でしょうか?
httpd.conf の maxclientsの値はどうなっていますか?
max_persistent > maxclients になっていればそうなるのも道理なような?
http://php.planetmirror.com/manual/ja/features.persistent-connections.php
このページの下のほうのメモには、こんな投稿があります。
jean_christian at myrealbox dot com 15-Aug-2002 05:13
If anyone ever wonders why the number of idle db process (open connections)
seems to grow even though you are using persistent connections, here's why:
"You are probably using a multi-process web server such as Apache. Since
database connections cannot be shared among different processes a new
one is created if the request happen to come to a different web server
child process."
翻訳すると、
持続的接続を使っているにもかかわらず、
待機状態のDBプロセス(オープン状態のDB接続)の数が増えていくように
見えるのは、以下のような理由による:
「たぶんあなたはマルチプロセスWebサーバーを使っている。
例えばApacheとか。DBコネクションを違うプロセス間で共有することは
できないがゆえに、WEBサーバのそれぞれ異なる子プロセスにリクエストが
来るたびに新しいDBコネクションが生成される。」
だそうです。
ということは、Apacheのhttpd.confの MaxClients で設定されている数
分のDB接続プロセスができてもおかしくないですよね。
というころで、
持続的
persistent
MaxClients
とかいうキーワードでこのMLの過去ログを検索したり、
googleしたりすると、いろいろでてきますよ。
PHP-users メーリングリストの案内