首页 新闻 会员 周边

跪求高手帮助(asp.net网站)

0
悬赏园豆:100 [待解决问题]

  小弟自己一个人做的一个话费充值asp.net网站,数据库是sqlserver2008r2,已经运行了一年多了,订单也是越来越多,从一天几百,到现在一天一万多笔订单,页面访问用户不多,主要都是通过接口提交订单,前段时间不知道为什么,现在运行一段时间(1-2天)后,系统就变的很慢,像蜗牛一样,然后我就先重启了网站,但是没什么用,然后再重启数据库,速度恢复了。请问下高手,这是什么原因啊,或者能告诉怎么去找问题的思路吗?问题非常急,在线等答案,小弟在这里先谢了。

问题补充:

Hello:

  补充一下问题,我的数据库和web站点在同一台服务器上,服务器上总共有4个站点,两个后台站点,两个前台站点,前台站点功能其实都差不多,但是一个前台站点订单比较少,每天保持在500哥订单左右,少的站点的订单都是通过页面提交订单。而另一个站点,大多数订单都是通过接口提交订单,一天一万二三千个订单。我服务器的配置是Inter(R) Xeon(TM) CPU 3.20GHz 3.19GHz,3.00GB的内存,140GB(C:30GB,D:106GB)硬盘,还剩可用硬盘空间95GB(C:20GB,D:75GB)。站点文件和数据文件都在D盘。麻烦大侠们在回答时,说的详细点,我服务器知识不是太好,在此先谢了。对了,上次系统变慢的时候,我看了,Avg.Disk Queue Length计数器一直处于100.

狼队的主页 狼队 | 初学一级 | 园豆:104
提问于:2012-09-07 08:27
< >
分享
所有回答(13)
1

一般情况是数据库问题,常用的字段是否有索引,表连接是否比较多

可以使用sql server自带的profler看看系统在干啥

对于常用的内容可以使用缓存memcached,减少数据库使用

而且windows系统的perfmon.exe也可以检测性能

参考 http://www.cnblogs.com/2018/category/308036.html 

2012 | 园豆:21230 (高人七级) | 2012-09-07 08:43

我数据量大(也就100多万条记录 )的表,都在插入时间上建了索引,因为我的查询,都有一个时间范围条件。但是这会有影响吗,慢之前,查询的速度也很快啊!还有我经常用,但是不怎么变的东西,我都放到Session或Application中了。数据库性能监测,我这块没搞过,不太会,那我先去看看你给的地址。

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-07 09:05
0

2008我没具体看过,我使用2000的时候发现过这个问题。最有效的办法是扩内存。随着运行时间变长sql server占用的内存会越来越大。

cuishuyue | 园豆:37 (初学一级) | 2012-09-07 08:51

网速很慢的时候,我上服务器看了,我3g的内存,还有将近1G的内存没有呢,CPU才用百分之几。

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-07 08:58
0

楼主你不会把一年的数据都存放在一个表中了吧?

看下你的数据库的表是不是很大了?

chenping2008 | 园豆:9836 (大侠五级) | 2012-09-07 09:09

不是啊,最大的一张表,也就才100多万条数据啊!

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-07 09:10

@狼队: 如果楼主的程序对表的操作都是插入的话,我想建不建立索引,没有任何的影响。

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-09-07 09:27
0

要建立索引,不然肯定慢,我上次碰到过也是这情况,还有翻页的时候最好是使用存储过程翻页,这样就不会每次都取这么多数据出来,只取一页的出来显示速度快多了

jason2013 | 园豆:1998 (小虾三级) | 2012-09-07 09:18

是建立了索引啊,慢之前是挺快的。我翻页用的就是用的存储过程。

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-07 09:20
0

应该跟数据量没什么关系,可能是有很多连接没有正常释放、死锁之类的

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-07 09:21
0

建议你在代码里加入一些调试(例如输出一些方法的执行时间),先确定是哪个方法耗时比较长,然后再进一步找问题。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-09-07 09:27

点击后台每个菜单,都耗时快一分钟,有的菜单都没有查询,也很慢,觉得莫名其妙。

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-07 09:29

@狼队: 没有数据库查询也很慢的话,可能是IIS的队列满了(请求量过大),你开始->运行->perfmon看一下队列情况。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-09-07 09:47

@水牛刀刀: 那我慢的时候再看看,但是如果是IIS的队列满了,我重启IIS为什么没有什么作用,但是重启数据库,速度就恢复了啊!

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-07 11:11

@狼队: IIS队列满了,你重启的话并不会把队列清空,依然会把所有请求处理完。因此你重启iis作用不大。综合你说的状况,我认为是数据库查询比较慢,同时你的网站没有使用异步handler,导致数据库查询操作一直占用着iis的连接池。如果iis队列比较慢,那90%是这个原因。我打赌你的网站里就是直接查询数据库,没有任何异步操作。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-09-07 11:40
0

索引要建好, 索引 重新生成一下,可能碎片太多,建个作业,每天重新生成。

磁盘空间是否足,不足收缩数据库日志,清理垃圾。

Qlin | 园豆:2403 (老鸟四级) | 2012-09-07 09:48

磁盘还有几十个G呢,呵呵!

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-07 11:11
0

首先你把服务器换掉,排除下服务器的原因。

然后再去考虑数据库的问题。

lyric song | 园豆:162 (初学一级) | 2012-09-07 11:08

服务器不太好换啊,租的,一年6000多呢。

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-07 11:12
0

你重启服务器,速度就恢复了,可能是访问的人多了,建立数据库连接次数就多了,而又没有及时的释放连接,

建议你用链接池管理数据库连接,个人观点,不对勿喷!

锄田 | 园豆:217 (菜鸟二级) | 2012-09-07 11:46
0

可能是你臨時數據庫滿了。你觀察一下臨時數據庫的增長。

九風玄月 | 园豆:202 (菜鸟二级) | 2012-09-07 14:37
0

楼主考虑连接池 以及 检查连接是否及时关闭 清除熟读资源

冯岩 | 园豆:221 (菜鸟二级) | 2012-09-08 22:33
0

插入频繁的表,加索引是有代价的,因为每次插入都要更新索引,特别是聚集索引,要做物理级平衡树搬动,那个很慢的。实在不行你得考虑对数据分区,不要都放在一张表上,比如客户A-E放在table A,客户G-K放在table B,但这两张表的结构是完全一样的,当然,这样会带来一些问题,比如查询,可以建立view,利用view的缓存来解决,读总比写快多了。还有一种办法就是做读写分离,基于replication,这种方案网上介绍的蛮多的,你自己搜一下吧。

找事的狐狸 | 园豆:474 (菜鸟二级) | 2012-09-09 06:05

应该跟这没关系吧,一般运行一两天之后才会很慢!

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-09 15:04
0

先优化数据库,不知道你的数据库现在多大了,然后再收缩数据日志,或者清除数据库日志。

技术先锋 | 园豆:212 (菜鸟二级) | 2012-09-10 09:37

怎么优化,麻烦兄弟说清楚点,我data数据库1.5G,日志才400多M。

支持(0) 反对(0) 狼队 | 园豆:104 (初学一级) | 2012-09-11 06:55

@狼队: 那你的数据库也不需要优化啊!对了,还有你现在有条件把web服务器和数据库分开吗?分开之后,其实问题就很明显地看出来了。呵呵!

支持(0) 反对(0) 技术先锋 | 园豆:212 (菜鸟二级) | 2012-09-12 17:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册