2012-04-23 11 views
0

より高いgc.maxlifetime値がサイトのパフォーマンスに影響するかどうかを知りたいですか?たとえば、2週間(1209600秒)を考えてみましょう。PHP - gc.maxlifetimeとperfomance?

私の質問の理由は、私のページのいくつかが非常に高速だった読み込みに数分かかるためです。値をデフォルトの24分から2週間に変更して、ユーザーのセッションデータとログインが永続的になるようにしました。これは約2週間前のことで、gc.maxlifetimeが遅いpageloadの問題になる可能性があると私は信じています。しかし、必ずしも同じページではない。

PS:私はよりパフォーマンスの良いクッキーベースの永続的なログインシステムに移行していますか?

おかげ

+0

この設定によってページが読み込まれない可能性が低くなります。あなたのサイトのDBの相互作用はありますか?それは約dbかもしれない。他の面では、gc_lifetimeを下げると、ページの読み込みが高速になりますか? –

+0

はい、それはdbを持っています。照会される表には約13,000行があり、ユーザーはLIMIT句を使用して一度に最大約10行を検索します。テーブルは正しく構築されていると思います.JOINを使用します。ありがとう – hdlmsa

答えて

1

gc.maxlifetime設定を試すべきではないと思います。一般に、ガベージコレクタは非常に軽量なプロセスです。なぜあなたのページが遅いのかを調べるべきだと思います。特定のコードセット間にタイマーを追加することでこれを行うことができます。次に、コードのどの部分が遅いかを確認します。例えば

<?php 

$start = microtime(true); 
/* code block A */ 
$blockA = microtime(true) - $start; 

$start = microtime(true); 
/* code block B */ 
$blockB = microtime(true) - $start; 


// etc. 


/** 
* At the end of your script, you can use the times and 
* print them to the screen, or log them to a file. 
*/ 
echo '<pre>' . PHP_EOL; 
echo 'Block A took '. round($blockA, 2) .' seconds ' . PHP_EOL; 
echo 'Block B took '. round($blockB, 2) .' seconds ' . PHP_EOL; 
echo '</pre>' . PHP_EOL; 
?> 

幸運が遅い部分を見つけます。ヒント:もしあれば、あなたのデータベースのクエリを見てください。

+0

これは、問題の特定を開始する最も簡単で最も論理的な方法のように聞こえます。アドバイスありがとう – hdlmsa

1

gc.max_lifetimeすべきではない直接衝撃性能(それが実際に削除されてしまうという保証はありませんが)それがないすべては、セッションが削除する公正なゲームである後の期間を設定されているため。

セッションGCが起動するたびに、クリーンアップの適格性を調べるためのセッション数が増えるため、すべてのセッションを並べ替えるのに時間がかかります。これは、セッションの最小存続期間を延長したため、いつでも他のすべてのセッションが同等であるため、以前より多くのセッションが進行中です。

非常に簡単にチェックできます:セッション記憶機構(デフォルトではシステムの一時ディレクトリにあるファイルを意味します)を見て、現在存在するセッションの数を確認してください。ファイルシステムのセッションであれば、10K以上の性能を持たないと目に見えるパフォーマンスの低下はありません。どのような場合でも、「目に見えるパフォーマンスの低下」は決して分範囲内に入ることはありません(ハードディスクなので、どれくらい遅くなりますか?)。

1

最初のオプション「gc.maxlifetime」がない - 何を意味する「session.gc_maxlifetime」であるが、)

オプション「session.gc_maxlifetimeは、」セッションデータがによって削除されることはありませんどのくらいの定義ガベージコレクション(gc)プロセス。 gcプロセスは、 "session.gc_divisor" & "session.gc_probability"で定義されているように頻繁に開始されます。

問題がある場合は、セッションデータが保存される場所(セッション保存ハンドラ)を確認する必要があります。そのプロセスを最適化するか、それを無効にして、自分でデータをクリーンアップする必要があります(cron)。

デフォルトの設定を使用する場合、PHPはセッションデータをローカルハードディスクに保存し、ボトルネックが最も頻繁に発生します。

"session.gc_maxlifetime"の値を大きくすると、セキュリティ上の問題が発生し、問題を先延ばしにするだけです。

関連する問題