以下、(仕方なく(^^;)調査してみた内容です。
(私は、インフラ担当で、開発系の知識には自信がありません。間違い等あればご指摘いただきたいと思います。)
ASP.NETでは、アプリケーションのコンパイル処理が初回アクセス時に実行されます。一度、コンパイルが実行されればキャッシュされるため、以後は高速に処理されますが、このコンパイル処理には結構時間がかかります。(環境によっては、30秒~40秒ほど)
IISの既定の設定では、
『アプリケーションプールのリサイクル』がAM2:00前後に(ランダムで)設定されていますので、このタイミングでキャッシュがクリアされます。

で、朝、会社に来て誰かがアクセスして初めてコンパイル処理が実行されるので、朝一に会社に来る超優秀な人が貧乏くじを引いて、すごく待たされるというカラクリです。
結局、会社に朝一番に来る人より早くアクセスして、MOSSを叩き起してしまえば良いという事なので、
リサイクル実行後に自動でサイトにアクセスするスクリプトを実行させれば良い、という結論となります。
とはいえ、スクリプト作るの、結構面倒クサイなぁ、誰か作ってないかなぁ。とかウダウダ調べてみたら、ちゃんとスクリプトを公開してくれている人がいました。
色々な人が色々なスクリプトを公開しているみたいだったのですが、今回のお客様がWSS3.0だったのと、こんな事もあろうかと、
PowerShellをインストールしていた(我ながらグッジョブ)ので、
MOSS2007/WSS3.0用の
PowerShell版をチョイス。
Kirkさんアリガトウ!!
Kirk Hofer’s Blog
SharePoint Warm Up ScriptPowerShellはまだまだ勉強中なので、このコード、結構参考になります。
DefaultCredentialの取得方法とか、XMLの処理とか。フムフム、なるほど、こうするのか。〆(・ω・` )メモメモ
stsadmの列挙系のコマンドの出力がXML形式で、VB Scriptで処理しにくくて、なんでこんな仕様なの?とか常々疑問に思っていたのですが、
PowerShellだと、こんなエレガントにコーディング出来るんですね。脱帽です。
もう、MicroSoft的には
PowerShell使え、って事ですね。
いい加減、VB Scriptと決別しないと。
思えば長い付き合いでした。お世話になりました。これからは
PowerShellと共に生きていきます。。。(^^;
で、お客様に紹介する前に、検証環境で実行してみたのですが、動かね~!!
次みたいなエラーが発生します。
値 "System.Object[]" を型 "System.Xml.XmlDocument" に変換できません。
エラー: "ルート レベルのデータが無効です。 行 2、位置 1 です。"
発生場所 D:\script\MOSSWarmUp.ps1:25 文字:16
+ [xml]$sites <<<< =stsadm -o enumsites -url $zone.Default;
+ CategoryInfo : MetadataError: (:) []、ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException結果的に、動作させるためにはスクリプトの修正が必要だったのですが、
いい感じにgdgd長くなってしまったので、つづきは次回に。
その2へつづく。環境:
MOSS2007(12.0.0.6421)
コメント
コメントの投稿