background
CMS

意外な落とし穴。Acquia CMSプリインストールモジュールの設定値に注意!!

2024/02/20公開
意外な落とし穴。Acquia CMSプリインストールモジュールの設定値に注意!!

プリインストールモジュールとは

意外な落とし穴。Acquia CMSプリインストールモジュールの設定値に注意!!CMSは「コンテンツマネジメントシステム(コンテンツ管理システム)」の略称です。
導入することにより、HTML等の専門知識がなくてもWebサイトの構築や運用が可能となります。
2000年以降、サイト規模の大小に関わらず多くのサイトがCMSを採用しており、現在は上場企業の約4割が導入していると言われています。

不具合事例

プリンストールモジュールの中に「Automated Logout」というモジュールがあります。
これは、一定期間ユーザーがサイト内の操作をしなかった場合、自動的にログアウトをさせるというものであり、デフォルトではおおよそ2日(正確には200000秒)で自動的にログアウトされるよう設定されています。
このモジュールの期間設定に落とし穴がありました。

顧客からの、できるだけログイン状態を長く維持できるようにしたいというご要望の元、この設定を90日に変更たところ、サイトアクセスが普段の10倍レベルに爆発的に増える事象が発生したのです。

原因を調査したところ、ブラウザの仕様と「Automated Logout」の動作のアンマッチによるものだと分かりました。
「Automated Logout」にて90日間を設定するために、設定値を「7,776,000」秒としました。
それに対し、主要なブラウザ(IE、Chrome、safari、firefox)などで扱える整数の最大値は「2,147,483,647」でありました。
すると、「Automated Logout」の動作時に設定値がミリ秒に変換された数値が扱われたため、ブラウザ上で「7,776,000,000」ミリ秒という数値が計算され、オーバーフローが発生してしましました。
その結果、モジュール内のAjaxが連続で高速に呼び出しされる事象が発生し、結果として大量のアクセスが発生したということです。

対応方法

ブラウザの仕様を変更することはできないため、「Automated Logout」の設定値を24日(2,073,600秒)とし、オーバーフローが発生しないようにしました。

最新版の「Automated Logout」は設定値の制限が追加されたためこのような事象は発生しませんが、最新版のモジュールを使用していない場合は発生してしまう可能性があるため、対応が必要です。

まとめ

このような不具合が発生するモジュールは他にも存在している可能性があるため、プリインストールモジュールであっても、設定値変更時にはAcquia clloudのStack Metricsなどを使用しての動作監視を推奨します。
その他の拡張モジュールについてはさらに気を付ける必要があるため、stableリリース(安定版)の場合も注意しましょう。

WEBSASではAcquia で、多種多様なサイトのコンサルティングから企画、開発・構築、保守・運用までフルラインでサービスを提供しております。 サイトのリニューアル,構築,バージョンアップをご検討されている方やサイトの性能にお悩みの方は是非、実績と信頼で選ぶSCSKのWEBSASにお問い合わせください。