0

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

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

PS: 私は、よりパフォーマンスに適していると思われる Cookie ベースの永続的なログイン システムに移行中ですか?

ありがとう

4

3 に答える 3

1

gc.max_lifetimeパフォーマンスに直接影響を与えるべきではありません。セッションが削除されるまでの期間が設定されているためです (ただし、実際にいつ削除されるかは保証されません)。

セッション GC が開始されるたびに、クリーンアップの適格性を調べるセッションの数が増えるため、すべてのセッションを整理するのにより多くの時間がかかるという点で、付随的なパフォーマンスの違いが生じる可能性があります。これは、セッションの最小有効期間を増やしたためです。他のすべての条件が常に同じである場合、以前よりも多くのセッションが進行中です。

非常に簡単なチェックがあります。セッション ストレージ メカニズム (デフォルトでは、これはシステムの一時ディレクトリ内のファイルを意味します) を調べて、現在いくつのセッションが存在するかを確認します。ファイルシステム セッションの場合、10K 以上で​​ない限り、目に見えるパフォーマンスの低下はありません。いずれにせよ、「目に見えるパフォーマンスの低下」が数分の範囲に達することは決してありません (これはハードディスクです。どれくらい遅くなる可能性がありますか?)。

于 2012-04-23T12:45:27.560 に答える
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;
?>

遅い部分を見つけて頑張ってください。ヒント: データベース クエリがある場合は、さらに調べてください。

于 2012-04-23T12:46:45.170 に答える
1

まず、オプション「gc.maxlifetime」はありません-あなたが意味するのは「session.gc_maxlifetime」です;)

オプション「session.gc_maxlifetime」は、ガベージ コレクション (gc) プロセスによってセッション データが削除されない期間を定義します。gc プロセスは、「session.gc_divisor」と「session.gc_probability」で定義された頻度で開始されます。

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

デフォルト設定を使用すると、PHP はセッション データをローカル ハードディスクに保存しますが、これがほとんどの場合ボトルネックになります。

「session.gc_maxlifetime」の値を大きくすると、セキュリティの問題が発生し、問題が先延ばしになります。

于 2012-04-23T12:57:59.570 に答える