2. お問い合わせ概要
C/Sアプリケションでは、クライアントとサーバ間はDataSetを
シリアル化してソケット通信しています。また、シリアル化の形式は
バイナリを使用しています。
※クライアント、サーバとも2Gのメモリを搭載しています。
-------------------------------------
Private socketStream As NetworkStream
Private socketHandle As TcpClient
Private socketFormatters As New
Runtime.Serialization.Formatters.Binary.BinaryFormatter
dataSet.RemotingFormat = SerializationFormat.Binary
socketFormatters.Serialize(socketStream, dataSet)
'→例外System.OutOfMemoryException発生
-------------------------------------
今回、以下に示す2つのパターンの時、シリアライズ処理で
例外System.OutOfMemoryExceptionが発生します。
パターン1
・5ユーザが一斉にサーバに対してデータを取得する
・データ量は、DataSetで9999行、10列 サイズ8863KB程度
・1又は2ユーザのサーバスレッドで上記例外エラーが発生する
パターン2
・DATASETにイメージファイルを格納する
・イメージファイルのサイズは約100MB(50MBまでは正常を確認)
・シングルユーザアクセスで上記例外エラーが発生する
メモリには、まだ余裕があると思われますが、サーバのメモリを4Gに増設
してみましたが、結果は変わりませんでした。
3. 製品とプラットフォームのバージョン(Edition 含む)とサービスパック
サーバ:Windows Server 2003 R2 SE SP2 .NET 2.0
クライアント:Vista Business Edition、XP SP2 .NET 2.0
5. お問い合わせの目的、ゴール
①シリアライズ失敗の原因を知りたい
②回避策等あれば教えてもらえないでしょうか?
③NetworkStreamは大量データの送受信する場合、どうすればよいでしょうか?
以上、よろしくお願いします。