Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravelのsession設定を変えて 劇的にパフォーマンスを改善した話

gorou_178
October 03, 2021

Laravelのsession設定を変えて 劇的にパフォーマンスを改善した話

webアプリケーションでCookieを利用したSession管理を行うことが多いと思います。
最近のフレームワークはSessionをとても簡単に活用できるためその維持管理について特に考えないことが多いです。

Laravelで構築したwebアプリケーションで、急激な性能劣化が発生して原因の特定と対策をすぐに行わなければいけない状況が発生しました。結果的にLaravelのSession設定を変更することで劇的にパフォーマンスが改善しました。

本セッションでは、なぜSessionが原因で性能が劣化したのか、また改善した理由について、経緯を踏まえてお話します。PHP/Laravelでのセッションの大まかな仕組み、性能劣化の要因、対策方法について説明します。

https://fortee.jp/phpcon-2021/proposal/05c4bfa3-445a-49a8-b1d9-572c0dc336ad

gorou_178

October 03, 2021
Tweet

More Decks by gorou_178

Other Decks in Programming

Transcript

  1. gorou 穴井 怜 居住地: 福岡 所属: イノベーター・ジャパン 職業: webエンジニア Twitter:

    @gorou_178 ブログ: https:/ /www.gorou.style/ その他: JP_Stripes 福岡 運営メンバー
  2. 2. DBの負荷が高い 疑問 ▫ なぜDBの負荷が高いの か? 検証 ▫ Newrelicで確認 結果

    ▫ deleteの処理時間が圧倒的 に大きい ▫ 仮設1: アプリケーションで 削除処理がある? ▫ ないので却下 ▫ 仮設2: セッションGCによる 削除? ▫ 可能性高いので調査
  3. Laravelのlotteryとは ▫ lotteryとはセッションGC発生頻度のLaravelでの設定 項目 ▫ デフォルト設定[2, 100] ▫ 2/100 =

    2%の確率で実施 ▫ php.iniでセッションGC発生頻度の設定があるが 利用しないので注意
  4. 4. アプリケーションのセッション設定 疑問 ▫ セッションGCでなぜ重くなる のか? 検証 ▫ DBの設定を確認 結果

    ▫ sessionsテーブルにindexが 設定されていない ▫ delete操作でテーブルロッ クが発生 ▫ update操作が待たされ る ▫ 負荷が上がる ▫ これが負荷の原因
  5. 参考URL - PHPで学ぶSessionの基本と応用 - hanhan1978 | Speakerdeck - PHP: 実行時設定

    - Manual - HTTPセッション 8.x Laravel - laravel/framework StartSession.php - GitHub