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

问题描述

ASP.NET程序,逻辑是这样的在网站开始运行的时候设置Timer,每隔十分钟进行数据计算、每次计算大概运行个10秒左右吧,期间会有一百次左右的查询和更新数据的操作。那么现在服务器因为业务需要,部署了四套这个程序,每个程序都有一个自己的主数据库,然后共用一个数据源数据库。现在问题来了,因为是相同的程序,每10分钟会同时进行计算数据,所以服务器CPU使用率100%持续一段时间,内存使用率倒是还可以,后来发现这些程序很不稳定,也许运行几个小时,也许运行几十分钟后就在代码任何处理查询数据库结果的地方都有可能报错。具体报错内容都和数据库返回DataTable后读取和操作DataTable时报错,如没有在DataTable中找到某某列的错误。后来我开始怀疑是数据库操作类相关的问题。但是我在程序里添加了网上找的另一个DBHelper类并写了几行代码进行测试发现结果让人迷惑测试代码如下:DataTabledt=DBHelper.Query("select*fromsys_config").Tables[0];foreach(DataColumndcindt.Columns){Response.Write(dc.ColumnName+",");}一般在程序没开始报错之前点击按钮运行上面这段代码,将会查询出大概100行数据,然后在页面上显示所有列名。但是一旦程序开始崩溃后我再点击该按钮,查询结果让我呆住了Query方法返回的DataTable并不是我查询的sys_config表。而有一定机率是其它地方用原来的数据库操作类执行的查询结果。也就是说本次查询结果返回的是本网站其它模块的数据库查询结果。而多次点击按钮查询结果并不是一样的。直到重启报错的网站应用池时才恢复正常。、测试了几天,始终不能理解是为什么。同时我装了一个虚拟机,只部署一套程序进行测试。运行了1天多,一切正常。

解决方案

本帖最后由 zzjj296 于 2016-06-18 13:12:25 编辑
解决方案二:
测试用的数据库类usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Linq;usingSystem.Text;publicabstractclassDbHelperSQL{//数据库连接字符串(web.config来配置),多数据库可使用DbHelperSQLP来实现.publicstaticstringconnectionString="";publicDbHelperSQL(){}///<summary>///执行查询语句,返回DataSet///</summary>///<paramname="SQLString">查询语句</param>///<returns>DataSet</returns>publicstaticDataSetQuery(stringSQLString){using(SqlConnectionconnection=newSqlConnection(connectionString)){DataSetds=newDataSet();try{connection.Open();SqlDataAdaptercommand=newSqlDataAdapter(SQLString,connection);command.Fill(ds,"ds");}catch(System.Data.SqlClient.SqlExceptionex){thrownewException(ex.Message);}returnds;}}}

解决方案三:
你还是说说怎么部署4套程序的?

时间: 2024-07-31 09:55:35

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

从Web查询数据库之PHP与MySQL篇_php技巧

从Web查询数据库:Web数据库架构的工作原理 一个用户的浏览器发出一个HTTP请求,请求特定的Web页面,在该页面中出发form表单提交到php脚本文件(如:results.php)中处理 Web服务器接收到对results.php页面的请求后,检索文件,并将其传递给PHP引擎处理 PHP引擎开始解析脚本.脚本主要包括了连接数据库和执行查询的命令.PHP启动了对MySQL服务器的连接并向该服务器发送适当的查询. MySQL服务器接收到数据库查询的请求,开始处理这个查询,并将查询结果返回给PHP

thinkphp中如何通过日期查询数据库

问题描述 thinkphp中如何通过日期查询数据库 thinkphp中如何通过日期查询数据库 M('uc')->where('strtotime("start")<$date')->select(); M('uc')->where('start<'.$date)->select(); $date是时间戳. 这些都是不行的

html-playframework 查询数据库 以及页面显示

问题描述 playframework 查询数据库 以及页面显示 我需要查询某个表的数据,然后转成list 然后再到页面上显示出来 sql写了出来了.但用以下方法获取到的list类型是List所以我不知道怎么在页面显示出来. SqlQuery sqlQuery = Ebean.createSqlQuery(sql); sqlQuery.setParameter("m1", "m1"); sqlQuery.setParameter("m2", &qu

hive查询卡死-hive查询时卡死,很久以后报出异常

问题描述 hive查询时卡死,很久以后报出异常 hive查询旧的数据时,有一个客户端卡死,等很久后报错,如下 Failed with exception java.io.IOException:org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations 说明:其他客户端的hive都正常,这个有问题的客户端可以创建新的表并且查询也没有问题, 但是查询旧的数据是有问题的.这个问题下午3点才出现的,

HP-EVA4400故障导致的oracle数据库丢失的恢复过程

一.故障描述 整个EVA存储结构是由一台EVA4400控制器,三台EVA4400扩展柜和28块FC 300G硬盘构成的.由于两块磁盘掉线导致存储某些LUN不可用,某些LUN丢失.由于EVA4400是因为某些磁盘掉线,从而导致整个存储不可用.因此接收到磁盘以后北亚工程师先对所有磁盘做物理检测,检测完后发现没有物理故障.接着使用坏道检测工具检测磁盘坏道,发现也没有坏道.磁盘坏道检测日志如下: 图一: 二.备份数据 考虑到数据的安全性以及可还原性,在做数据恢复之前需要对所有源数据做备份,以防万一操作不

多层数据库开发九:查询数据库

                                                        第九章 查询数据库 这一章介绍如何用TQuery构件查询数据库,如何通过SQL语句检索.插入.更新和删除数据.SQL是符合工业标准的关系数据库语言,既可以用于远程的基于服务器的数据库,如Sybase.Oracle.InterBase和Microsoft SQL Server,也可以用于本地数据库如Paradox.dBASE.FoxPro和Access以及符合ODBC的数据库.9.1 有

个人ASP.NET程序性能优化心得(1):数据库篇

前言 相信园子里有不少程序员同学都是在做着xx管理系统这样的中小型项目,这种项目往往是一种工作量的代码,程序员同学就将青年耗费在这样的项目中,不断改变需求,不断地加班赶工,于是就开始怀疑这个行业,对developer充满厌恶,想学新东西,可是周围同事的水平都是差不多:想买书学平时加班根本没有自己的时间.这种状况相信大多数情况都在我们身边发生,我之前就是处于这种状态,使用的是asp.net语言,不过很难界定所做的项目是网站还是软件,因为它很复杂,开发周期和传统软件开发没有什么区别,但它确实是部署在

智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 )

原文:智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 ) SQL Optimizer for SQL Server 帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句   SQL Optimizer for SQL Server 让 SQL Server DBA或者T-SQL开发人员能够主动地识别潜在的SQL性能问题,通过扫描和分析SQL语句进行人工智能自动SQL优化.Dell SQL Opt

【数据蒋堂】第14期:计算封闭性导致臃肿的数据库

许多大型用户的数据库(仓库)在运行多年之后,都会积累出很多的数据表,严重者数以万计.这些数据表年代久远,有些已经忘记建设原因,甚至可能已不再有用,但因为很难确认而不敢删除.这给运维工作带来巨大的负担.伴随着这些表还有大量的存储过程仍在不断地向这些表更新数据,占用大量计算资源,经常要迫使数据库扩容. 这些表是真地业务需要吗需要吗?业务会复杂到需要成千上万的表才能描述吗? 有过开发经验的人都知道这不大可能,几百个表就能描述相当复杂的业务了.这些众多的表绝大多数都是所谓的中间表,并不是用来存储基础数据