asp.net では、既定のセッション タイムアウトは 20 分です。セッションのタイムアウト期間を 2 時間以上に変更すると、サーバー側でパフォーマンスの問題が発生しますか?
asp.net で最大セッション アウト時間を使用することの制限や欠点はありますか?
この問題から抜け出す方法を教えてください。
asp.net では、既定のセッション タイムアウトは 20 分です。セッションのタイムアウト期間を 2 時間以上に変更すると、サーバー側でパフォーマンスの問題が発生しますか?
asp.net で最大セッション アウト時間を使用することの制限や欠点はありますか?
この問題から抜け出す方法を教えてください。
セッションは、ユーザーごとにサーバー上で維持されます。セッション タイムアウトが増加すると、サーバーは非アクティブなセッションに割り当てられたメモリを解放できなくなります。
asp.net で最大セッション アウト時間を使用することの制限や欠点はありますか?
HttpSessionState.Timeout プロパティ
Timeout プロパティを 525,600 分 (1 年) を超える値に設定することはできません。デフォルト値は 20 分です。
短所: 多数のユーザーがいる場合にパフォーマンスの問題が発生し、セッション タイムアウトが増加すると、非アクティブなセッションが Web サーバーのメモリに残り、アプリケーション プールがリサイクルされる可能性があり、その結果、すべてのユーザーのすべてのセッションが失われる可能性があります。
IIS6 以降を使用している場合、アプリケーション プールの設定によっては、w3wp プロセスがリサイクルされる頻度に影響する場合があります。アプリ プールがリサイクルされると、アウトプロセス セッション状態管理または SQL をセッション状態ホストとして使用しない限り、セッションは失われます。
タイムアウトを 2 時間に増やすと、個々のユーザーが頻繁にセッションを失うことはなくなりますが、プロセスがリサイクルされるときに、サイトを閲覧しているすべてのユーザーがログオフされる可能性が高くなります。
セッション時間を長くすると、アイドル状態の Web ページがタイムアウトする可能性が低くなります (ユーザーが Web ページを開いたままランチに行く場合など)。ただし、Habib が言うように、サーバーはこの間にユーザー情報を保存する必要があるため、これはより多くのサーバー リソースを消費します。
また、セキュリティ リスクになる可能性もあります。ユーザーがログアウトせずに Web ページを閉じると、CSRF攻撃のウィンドウが長くなります。
最善の方法は、ユーザーが Web ページをどのように使用しているかを理解することです。ページを長期間開いたままにしておく必要がある場合は、ページの定期的なコールバックまたは更新を確認してください。または、サイトのセキュリティが重要な場合は、一定期間非アクティブになった後、ユーザーを自動的にログアウトすることを検討してください。
共有ホスティング環境でタイムアウト値を上げようとすると失敗することを考慮してください。ファイルにその値を設定することでブロックされ、帽子が優先されるため、そのためにSQL セッションmachine.config
を使用する必要があります。そのタイムアウト時間は自由に変更できます。
また、通常、AppPool を頻繁に再起動して、他の Web サイトをブロックする可能性のある悪意のあるコードや悪いコードのブロックを解除します。AppPool が再起動するたびに、すべてのセッションがここに移動します (もちろん、代わりに SQL セッションを使用する場合ではありません)...
一方、Web アプリケーションを自分でホストしている場合は、メモリのサイズは別として (ユーザー セッションを言っており、その名前が示すように、ユーザーごと、アプリケーションごとにアプリケーション セッションを使用すると仮定していることを思い出してください)。このメモリの増加を考慮しても、パフォーマンスが低下することはありません。