• 締切済み

phplibってさぁ~~~

alfeimの回答

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.1

それってバックエンドで動いてるDBサーバが悲鳴上げてるだけでは? で、あれば対処方法としては ・DBサーバを速くする ・DBサーバの最大接続可能数を減らす ・Session用DBサーバを複数立てて、SessionIDを見てHashingする事でSessionサーバの平均負荷を下げる(要session.incの書き換え) など考えられますが・・・ まぁPHPLIBの機能自体が利便性を提供する分、負荷がでかくなるのはしょうがないと思いますけど・・・ HTML template機能なんか、正規表現エンジン使いまくってるからCPU負荷がかなりかかりますよ >とりあえずpcnnect使ってるところconnectに書き直すだけでもだいぶ 軽減したんだけど・・・・ これはDBへのpconnectがconnectと対してパフォーマンスが違わないDBだったからでしょう Oracleみたいにconnectの負荷が結構でかいDBであればpconnectの方が軽いはずですよ

akino4
質問者

お礼

ありがとうございます。 説明があまりにもたりませんでしたね バックエンドDBはPostgrsSQLなんですけど 当然のように コネクション数は、PostgreSQLの場合ある程度設定できて十分に でかくして、それにあわせてphplibのDBコネクション数をきめてるんですけど 問題はそこににもCPUパワーにもなくて。 単純にPHPがコネクションを開放しないで、だんだんとコネクションが たまっちゃうんですよね。特にデフォルトがpconnctなもんで その傾向が・・・・postgreの実装とかみあわないのかな?   perlでセッション管理してたときは 毎回強制でコネクションきっていて、理論上不可は高かったんだけど それのときははるかに少ないコネクション数の設定(DB側)でも オーバーすることなかったから。う~~んどないなってんだろ・・・ しばらくソースを追うたびに出ようかな ちなみにバージョンはphp3.0.18-ja phplib-7.2c postgre 7.0.3

関連するQ&A

  • セッションとコネクション

    TCP・IPについて勉強をしているのですが、コネクションでやっていることについてはわかるのですが、セッションとは何が異なるのかが分かりません。 コネクション、セッションの双方に切断・確立する等の記述があり、混乱してしまっています。 現在の私のイメージとしては ・コネクションは仮想的なデータ通信路。 ・セッションはやり取りの管理をおこなう。 となっています。 例えば、Bフレッツハイパーファミリーはセッションが2つしか貼れないというのは、どのようなことなのでしょうか。 どなたかよろしくお願いします。

  • ソケットとセッション

    セッションを維持させた儘で、コネクションだけが途切れた場合には、セッションを保つ為に、どういう仕組みでサーバが管理しているのでしょうか? コネクションの場合には、メインメモリ上のソケットが割り当てられているのだろう、と思われますが、セッションの場合には別の手段が適用されているのだろう、と思われますから、教えて下さいませ。

  • データベースを使用したWebアプリの作り方

    php+Mysqlで簡単な照会プログラムを作ろうと思っているのですが、Webを使ったアプリを作ったことが無いので要領が判らず困っています。 phpの文法やMysqlの操作などはマニュアルを見ればなんとかなると思うのですが、幾つかのフォームを介した場合のセッションの考え方(Web自体のセッションとMysqlに対してのコネクション)がよく判りません。 ログイン画面でユーザーの認証をしたとすると、次のフォームに移ったとき、同じセッションであることを保持する情報をCookieなりデータベースなりに吐き出して処理するんであろうと思うのですが、その時にデータベースのコネクション情報は保持する(できる?)のでしょうか? mysql_pconnectとmysql_connectがあるようですが、mysql_pconnectを使った実践的なアプリケーションの例が見つからないので、立ち止まっています。 初歩的な質問で申し訳ないですが、参考になるサイトを教えて頂けるだけでも結構ですので、よろしくお願いします。

    • 締切済み
    • PHP
  • LINUXサーバーセキュリティについての質問です。

    DOS攻撃されたら自動でそのIPアドレスを遮断するのは可能でしょうか? あるのでしたら、その方法はどうするのでしょうか? もしくは、 なんらかのサーバー管理ソフト等でもかまいません。 無料でさがしているのですが、 有料サービスでも教えてください。

  • セッション管理について

    web開発をしております。 セッションのことについて質問です。 例えば、 javaのspringではアノテーションでセッションを管理できたりしますが、セッションタイムタアウトの時間はapacheで設定できたりします。 セッションというのは、プログラム言語とサーバーのどちらで管理しているのでしょうか

    • ベストアンサー
    • Java
  • Yahoo掲示板での可能不可能

    まず、掲示板が荒れるとよく「空爆するぞッ」とか言ってる人が居ますけど、あれはDOS攻撃などの事を言ってるのでしょうか? それなら、YahooからIPアドレスを抜く事なんか出来るとは思えないのですが・・・・ ただのハッタリですかね? それとも違法ツールを使えば管理されたサーバからIPを見るなんて事も出来てしまうのでしょうか? もう一つ 同一人物だと思われるハンドルネームを見破る事は、管理者以外が出来る事なのでしょうか? とても出来るとは思えないのですが、良く「出来る」みたいな事を書いている人がいますので、技術が在れば可能なのかな?とたまに思ってしまう事もあります(ほとんど嘘だろうけど) 出来る・出来ない などできれば理由とともに教えて下さい

  • Oracleのセッションの強制タイムアウト

    Oracle 8i 8.1.6 (SPARC Solaris)を使用してプログラムを 開発しているのですが、端末の電源が落ちたりすると Oracleの サーバ側にセッションが残ってしまい困っています。 Oracleで、たとえBUSY状態でも一定の時間がきたらセッションを 切断したいのですが、どのようにすればよいのでしょうか? alter profile の CONNECT_TIME を試したのですが、うまく切断 されませんでした。 よろしくお願いします。

  • コネクションプーリングについて

    WebアプリケーションとRDBMSの接続時間の軽減として、 コネクションプーリングという手段があるそうです。 ただ、実装に手間がかかるそうです。 アプリケーションサーバーはこれを実装しているようですが、 そんな予算はありません。 そこで、この部分をやってくれるオススメなソフトなぞはあるでしょうか? ちょっと調べたところ「jdbshare」、「PoolMan」などがありましたが。 もしかして、Tomcat自体にコネクションプーリングの機能があるのでしょうか? なにぶん勉強不足で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • Java
  • 子プロセス終了で閉じてしまうmysqlコネクション

    pcntl_fork()を利用して、子プロセスでファイル収集を行い、親プロセスがそのファイルを解析してDBへ登録するといった単純な2並列のプログラムを書いています。 ところが子プロセスが終了した時点でどうもmysqlのコネクションが切れてしまうようなのです。 以下は上記内容を再現した簡易コードです。 $connect = mysql_pconnect("localhost", "user", "password"); //parent if ($pid = pcntl_fork()) { // 本当はここで収集されたファイルを順次解析してDBに登録を行う。 sleep(5); // 子が先に終了するように時間差を。 mysql_query($query="use testdb",$session) || die(sprintf("%s : %s\n", $query, mysql_error())); pcntl_wait($status); //child } else { // 本当はここでファイルを収集する sleep(1); exit(0); } 上記コードは以下のエラーを吐いて終了します。 use testdb : MySQL server has gone away mysql_pconnectの代わりにmysql_connectを使ったり、mysql_queryの第二引数に$connectを与えても結果は変わりません。 子プロセスが終了してもmysqlとのコネクションを維持しておきたいのですが解決策はあるでしょうか。 ちなみにPHP CLIで実行しています。 OS: Linux PHP 5.2.4

    • ベストアンサー
    • PHP
  • dos攻撃の基準について

    スクレイピングの練習で、ブログサイトなどから 記事ごとのコメントを取得するプログラムを作っています。 サムネイルに50の記事があるサイトですと、1度に50回アクセスすることになります。 作りながらプログラムを走らせて、修正をしてを繰り返していてふと気づいたのですが、 50回ほどプログラムを起動したので、数時間で2000回くらいアクセスしたことになります。 これって、DOS攻撃と間違えられてしまうのでしょうか。 この量のアクセスはDOS攻撃の範疇に入るのでしょうか。 ご教授いただけると幸いです。