C
Charlotte
Hello,
We are doing a stability test on our application to prepare for Microsoft
SQL Server 2000 certification, and we found a memory leak, but we cannot find
its source and fix it.
We use an ASP page written in JScript that connects to Analysis Services
2000 using ADOMD and retrieves data from it (this is a very simplified
version of our real application that we created just to test the memory
leak), see the code below.
We are using Microsoft Application Center Test to run this page, and
Performance Monitor to monitor the Memory/Committed Bytes and Processor usage
of our web server. The Memory/Committed counter slowly increases over time,
which indicates a memory leak, right? The Private Bytes for the InetInfo
process remain stable.
Our setup is a web server running Windows 2000 and Analysis Services on a
different server running Windows 2000. The application Center Test is running
from another computer. We also tried using a web server running Windows XP
Pro instead of Win2000, with similar results.
Using PerfMon, we monitor the number of Analysis Services connections, and
this number remains stable, so the memory leak doesn't seem to be due to an
ever increasing number of AS open connections.
The code is very simple, yet we don't know what causes the problem.
Any help on trying to find and fix this problem would be greatly appreciated.
Thanks.
Charlotte
------------------------------------------
Here is the code of the ASP page:
<%@LANGUAGE="JAVASCRIPT"%>
<%
try {
var connString = "Data Source=athlon900;Provider=MSOLAP.2;Initial
Catalog=Foodmart 2000";
var cat = Server.CreateObject("ADOMD.Catalog");
cat.ActiveConnection = connString;
var cst = Server.CreateObject("ADOMD.CellSet");
cst.Source = "select { [Product].[All Products].Children, [Product].[All
Products] } on columns, { [Store].[All Stores].Children, [Store].[All
Stores] } on rows from Warehouse where ( [Measures].[Warehouse Sales],
[Time].[1998] )";
cst.ActiveConnection = cat.ActiveConnection;
cst.Open();
var rowCount = cst.Axes(1).Positions.Count;
var colCount = cst.Axes(0).Positions.Count;
Response.Write("<p>Query results: rowCount = " + rowCount + "; colCount = "
+ colCount + "</p>");
if (cst != null && cst.State != 0) cst.Close();
cat = null;
cst = null;
} catch(e) {
Response.Write("Error on the page: " + e.message);
}
%>
-------------------------------------------
We are doing a stability test on our application to prepare for Microsoft
SQL Server 2000 certification, and we found a memory leak, but we cannot find
its source and fix it.
We use an ASP page written in JScript that connects to Analysis Services
2000 using ADOMD and retrieves data from it (this is a very simplified
version of our real application that we created just to test the memory
leak), see the code below.
We are using Microsoft Application Center Test to run this page, and
Performance Monitor to monitor the Memory/Committed Bytes and Processor usage
of our web server. The Memory/Committed counter slowly increases over time,
which indicates a memory leak, right? The Private Bytes for the InetInfo
process remain stable.
Our setup is a web server running Windows 2000 and Analysis Services on a
different server running Windows 2000. The application Center Test is running
from another computer. We also tried using a web server running Windows XP
Pro instead of Win2000, with similar results.
Using PerfMon, we monitor the number of Analysis Services connections, and
this number remains stable, so the memory leak doesn't seem to be due to an
ever increasing number of AS open connections.
The code is very simple, yet we don't know what causes the problem.
Any help on trying to find and fix this problem would be greatly appreciated.
Thanks.
Charlotte
------------------------------------------
Here is the code of the ASP page:
<%@LANGUAGE="JAVASCRIPT"%>
<%
try {
var connString = "Data Source=athlon900;Provider=MSOLAP.2;Initial
Catalog=Foodmart 2000";
var cat = Server.CreateObject("ADOMD.Catalog");
cat.ActiveConnection = connString;
var cst = Server.CreateObject("ADOMD.CellSet");
cst.Source = "select { [Product].[All Products].Children, [Product].[All
Products] } on columns, { [Store].[All Stores].Children, [Store].[All
Stores] } on rows from Warehouse where ( [Measures].[Warehouse Sales],
[Time].[1998] )";
cst.ActiveConnection = cat.ActiveConnection;
cst.Open();
var rowCount = cst.Axes(1).Positions.Count;
var colCount = cst.Axes(0).Positions.Count;
Response.Write("<p>Query results: rowCount = " + rowCount + "; colCount = "
+ colCount + "</p>");
if (cst != null && cst.State != 0) cst.Close();
cat = null;
cst = null;
} catch(e) {
Response.Write("Error on the page: " + e.message);
}
%>
-------------------------------------------