- - PR -
asp.netでout of memory exception
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-01-24 11:08
こんにちは 助けてください。
ASP.NET(VB.net)でWebサイトを立ち上げています。 (.net framework 1.1) 本番初日out of memory exceptionでIISダウンが頻発しています。 負荷による原因ではないかと漠然とは理解していますが、 具体的にはどんな原因が考えられるのでしょうか? [ メッセージ編集済み 編集者: BLACKGUM 編集日時 2005-01-24 11:13 ] | ||||||||
|
投稿日時: 2005-01-24 12:00
そんなに負荷がかかっているのか、検証しましたか? (^-^;) # これだけでは、何とも言えないような気が... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-01-24 12:28
私はそういう状況になったことがないので、すぐに解決となる回答は出せません。申し訳ないです。 メッセージ通りに、単にメモリーを使い尽くしたのかもしれません。 当然、この辺調査してるでしょうから、なにかわかったら書き込んでいただけるとありがたいです。 プログラムに問題があるということも考えられますしね。オブジェクトを作りまくって、データ保持しまくって、大勢が接続にくると、かなりメモリー使っちゃいますから。 初日ですか。テストで拾えなかったのは不運でしたね。 _________________ たつごろー http://www.codeseek.net MCSE MCSD.NET、MCDBA、MCSA、MCAD Oracle Master Platinum 9i、Oracle Master Linux+ [ メッセージ編集済み 編集者: たつごろー 編集日時 2005-01-24 12:32 ] | ||||||||
|
投稿日時: 2005-01-24 12:41
メッセージを信じるなら単純にメモリ不足なんじゃないですか? Session変数に何も考えずに巨大なオブジェクトを格納しまくっているとかありません? いずれにせよメモリ不足の原因をコードレベルで突き詰めていくしかないような気がする。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||||||
|
投稿日時: 2005-01-24 12:55
どうもセッションを張るときに、
DBの内容を大量にメモリーに格納しているようです。 そしてセッションタイムアウトを120分にしているため、 かなりの数のセッションが張りっぱなしになっているようです。 B2Bですが利用者の顔が見えないので暗中模索です。 目先の対応として、セッションタイムアウトを ひとつのサブシステムは10分、もうひとつは30分にして再起動させ、 様子を見ています。 同時ユーザー数を20と設定してテストしていたのですが、 画面を上げっぱなしの場合を考慮していなかったようです。 物理的にはメモリーはあまっているようですが、 例えば許容メモリーを増やすという力技は出来ないのでしょうか? | ||||||||
|
投稿日時: 2005-01-24 18:47
こんばんは
上記の対応を行った結果、午後からはサーバーが落ちることなく運用できました。 IISの画面を開きっぱなしで運用されている会社が多く セッションタイムアウトが行われたログは結構頻繁に出ておりました。 今後、セッションタイムアウトの間隔の調整が必要となってきますが この辺は何を元に判断していけばいいんでしょうか??? SEの感覚で判断していくしかないんでしょうか? | ||||||||
|
投稿日時: 2005-01-24 21:38
Session変数の内容はデフォルトだとメモリ上に保持されるけど、SQL Serverに保持するオプションがあるんですよ。これを指定するとSession変数にまつわるメモリ消費量を大幅に減らせます。同時接続数と1セッション辺りのメモリ消費量を考えて、Sessionをメモリ上に保持するのか、SQL Serverに持たせるのかを検討します。よほど小規模なシステムじゃない限り、SQL Serverに持たせる事になるはずです。
http://www.atmarkit.co.jp/fdotnet/dotnettips/186aspsessql/aspsessql.html と言うわけで、事前に検討していれば、Sessionのタイムアウトで調整すると言う事態にはならないです。 | ||||||||
|
投稿日時: 2005-01-24 21:41
こんにちは。
セッションタイムアウトの間隔を調整するより、根本的な原因となっている
を改善できるか考えていった方がよいです。どういった情報をセッションに格納しているかわかりませんが、たとえば一覧データがあった場合、すべてのデータをセッションに格納しようとせず、ページ単位に都度DBへ取りに行くなどの工夫が必要です。 またセッションタイムアウトは、サーバーリソースを開放するという点とは別に、セッション盗用を防止するなどのセキュリティ面からも考えなければいけません。 参考URL http://www.ipa.go.jp/security/awareness/vendor/programming/a05_03_main.html | ||||||||
