性能问题导致的查询数据库结果不是语句所查询的内容问题,困惑很久了。

jgjgjg23 2016-06-18 01:03:42
ASP.NET程序,逻辑是这样的 在网站开始运行的时候设置Timer ,每隔十分钟进行数据计算、每次计算大概运行个10秒左右吧,期间会有一百次左右的查询和更新数据的操作。

那么现在服务器因为业务需要,部署了四套这个程序,每个程序都有一个自己的主数据库,然后共用一个数据源数据库。

现在问题来了,因为是相同的程序,每10分钟会同时进行计算数据,所以服务器CPU使用率100%持续一段时间,内存使用率倒是还可以,后来发现这些程序很不稳定,也许运行几个小时,也许运行几十分钟后就在代码任何处理查询数据库结果的地方都有可能报错。

具体报错内容都和数据库返回DataTable后读取和操作DataTable时报错,如 没有在DataTable中找到 某某 列的错误。

后来我开始怀疑是数据库操作类相关的问题。但是我在程序里添加了网上找的另一个DBHelper类并写了几行代码进行测试发现结果让人迷惑
测试代码如下:
DataTable dt = DBHelper.Query("select * from sys_config").Tables[0];

foreach(DataColumn dc in dt.Columns)
{
Response.Write(dc.ColumnName + ",");
}

一般在程序没开始报错之前点击按钮运行上面这段代码,将会查询出大概100行数据,然后在页面上显示所有列名。

但是一旦程序开始崩溃后我再点击该按钮,查询结果让我呆住了

Query方法返回的DataTable并不是我查询的sys_config表。而有一定机率是其它地方用原来的数据库操作类执行的查询结果。

也就是说本次查询结果返回的是本网站其它模块的数据库查询结果。

而多次点击按钮查询结果并不是一样的。

直到重启报错的网站应用池时才恢复正常。、

测试了几天,始终不能理解是为什么。

同时我装了一个虚拟机,只部署一套程序进行测试。运行了1天多,一切正常。

...全文
114 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-06-18
  • 打赏
  • 举报
回复
你还是说说怎么部署4套程序的?
jgjgjg23 2016-06-18
  • 打赏
  • 举报
回复
测试用的数据库类
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

public abstract class DbHelperSQL
{
    //数据库连接字符串(web.config来配置),多数据库可使用DbHelperSQLP来实现.
    public static string connectionString = "";

    public DbHelperSQL()
    {
    }

    /// <summary>
    /// 执行查询语句,返回DataSet
    /// </summary>
    /// <param name="SQLString">查询语句</param>
    /// <returns>DataSet</returns>
    public static DataSet Query(string SQLString)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            DataSet ds = new DataSet();
            try
            {
                connection.Open();
                SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                command.Fill(ds, "ds");
            }
            catch (System.Data.SqlClient.SqlException ex)
            {
                throw new Exception(ex.Message);
            }
            return ds;
        }
    }
}

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧