top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_647

タイムアウト:長いプログラムで画面が真っ白、あるいは「表示できません」。さて、これは何が関係している? ・・・ 【サーバー管理】

 2009-01-23
 単純な データベースからのクエリ処理ではなく
 管理的なシステムを廻し、
 (それが、極端に時間がかかるものだった場合・・・)

 ・画面が真っ白になったり
 ・「この頁は表示できません」 ・・・ などとなる

 決して「エラー」というわけではないのだが・・・

 少し、このあたり探ったので
メモとしておこう

 ◎タイムアウトについて、ちと考える

  追記に ▼

FC2ブログランキングにほんブログ村 IT技術ブログ Webサイト構築へブログ王ランキング人気ブログランキング人気ホームページランキングへ


more**************************************************
タイムアウトについて、ちと考える
**************************************************

 ■考えられる、要因可能性
 /*------------------------------------------*/
  □ローカル
   ・ブラウザ自体の設定
    ・ブラウザには、タイムアウトにおける
     対応時間を設定できる「レジストリ項目」が存在する

   ※これは随分前から知っていて、今回は
    すでに対応しているPCでの出来事だった。
   ※すでにご存知の方もいらっしゃると思うが、ここにも
    記しておこう・・・

   ●ブラウザのタイムアウトの時間の調整
***********************************************************
1.<スタート>メニュー→<ファイル名を指定して実行>と選択。
2.「名前」に半角で「regedit」と入力し、<OK>ボタンをクリック。
3.「レジストリエディタ」が起動したら、
 HKEY_CURRENT_USER→Software→Microsoft→Windows→CurrentVersion→Internet Settings
 とキーをたどって開く。
4.<編集>メニュー→<新規>→<DWORD値>と選択し、
 名前を「KeepAliveTimeout」とする。
5.「KeepAliveTimeout」をダブルクリックで開き、
 <10進数>をチェックする。
6.「値のデータ」を「300000」に書き換えて<OK>ボタンをクリック。
7.<×>ボタンを押して、レジストリエディタを終了する。
8.後はWindows XPに再ログオンして設定完了。

これでKeepAliveのタイムアウト値が5分に
***********************************************************

 ただ、今回困ったのはこの状況でも
 ・あるサイトでは問題なく
 ・あるサイトでは(同じプログラム、上記設定でも)
  タイムアウトして、プログラムが最後まで確実に完了 しないのだ。


  □サーバー
   ・サーバー側でチェックすべきは
    ・Apacheの設定
    ・phpプログラムの設定
     (今回この作業のきっかけになったのは
      PHPプログラムだ)
    ・MySQLの設定
    だ。

   ●php.ini
    phpの初期設定ファイルである、php.ini
    サーバーの構造やバージョンにより置き場所はいろいろ
    あるようだ。

    私が知っているのでも
    ・/usr/local/lib/php.ini
    ・/etc/php.ihi


    phpinfo() とかで、確認できる

    ※今回に関係しそうな項目は、
 【output_buffering
 ・出力バファリングの設定を行う(OnまたはOff)
 ・出力を直接だすのではなく、いったん貯めて
  必要になった時点で出力する などが可能に
  ・On:HTTP BODYを出力した後でもHTTPヘッダが出力可能
     ・バファサイズの制限を設定するには直接数字
      (例:)output_buffering = 4096
  ■関連
   [ob_start] 出力のバッファリングを有効にする
   [header] 生の HTTP ヘッダを送信する

 ※今回の目的「タイムアウト」を無いようにするためには
  これは、「Off」の方がいいのではないか?
  ・バッファリングしていると、
   phpの動作が完了するまで何も「ブラウザに返らない」
   したがって、「応答なし」となるのではないか?

   >> 現在 On だったので、Off にして再起動
      すればどうか?


    ※他に関係しそうな項目は、
 【max_execution_time
 ・スクリプトがパーサにより強制終了されるまでに
  許容される最大の 時間を秒単位で指定
 ・デフォルトでは、30 に設定
  ( コマンドライン から実行する場合のデフォルト設定は 0 )
 【max_input_time
 ・スクリプトが POST、GET そしてファイルアップロードなどの
  入力を パースする最大の時間を、秒単位で指定
 【memory_limit
 ・スクリプトが確保できる最大メモリをバイト数で指定
  (使用可能メモリに制限を設けたくない場合は、 -1 を指定)

  必要になった時点で出力する などが可能に
  ・On:HTTP BODYを出力した後でもHTTPヘッダが出力可能
     ・バファサイズの制限を設定するには直接数字
      (例:)output_buffering = 4096
  ■関連
   [set_time_limit] 実行時間の最大値を制限
    ※デフォルトの制限値は 30 秒
     この関数がコールされた場合、
     タイムアウトカウンタをゼロから再スタート
     (つまりその合計値が スクリプトの実行される時間)
   [ini_set] 設定オプションの値を設定



   ●httpd.conf(Apache)
    まさに「Timeout」という設定項目がある

    場所は
    ・/etc/httpd/conf/htpd.conf とか

    ※今回に関係しそうな項目は、
 【Timeout
 ・各イベントについて、
  リクエストを失敗させるまでにサーバが待つ時間を設定
 ・デフォルト: TimeOut 300

 ※昔は、このデフォルトは 1200 ぐらいだったらしい

   >> ここを少し多めに、600 にして再起動
      すればどうか?

    ※他に関係しそうな項目は、
 【KeepAlive
 ・HTTP の持続的な接続を有効にする
 ・デフォルト: KeepAlive On
  ■関連
   [KeepAliveTimeout] 持続的な接続で
   次のリクエストが来るまでサーバが待つ時間
    ※デフォルトの制限値は 30 秒
     この関数がコールされた場合、
     タイムアウトカウンタをゼロから再スタート
     (つまりその合計値が スクリプトの実行される時間)


 これらの情報を基に、これから格闘を始める。
 詳細報告はまた・・・
commentsコメント
参考にさせていただきますね
【2009/05/02 16:27】 | 三ツ星トラフィック店長 #- | [edit]
中と半端な情報で恐れ入ります。
お役に立ちましたら幸いです。
【2009/05/03 01:52】 | metaboy #- | [edit]
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/647-73916546
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。