程序性能问题,高手请进,谢谢

九章落地 2007-04-05 04:28:46
我们经理用VB(5/6)编写了一个比较大(60多万行代码)的行业软件,公司各个部门都用它来处理数据和业务,比如下单、提单、跑月结、跑报表等。
现在遇到了一个非常棘手的问题:
多人使用的时候(执行各种操作),有时速度会一下子骤降下来,本来以前2秒钟能读到的数据有时要等好几分钟,最严重时等过十几分钟,但通过查询分析器登录到SQLServer执行相关操作时却很快。
我们被这个问题困扰了很久,一直找不到原因,也不知具体问题出在哪里!!!
由于该软件编写得比较早(始于VB5),用的是RDO连接SQL2000服务器,大部分的数据库操作都是通过调用存储过程实现。
由于我写程序的时间比较短,对VB、RDO、SQLSERVER都不是很了解,
热切希望得到各位高手,特别是熟悉vb\rdo\MS SQLSERVER的高手的帮助和指点!
谢谢!
...全文
656 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
jintech 2007-04-06
  • 打赏
  • 举报
回复
恩,您们进行的测试不够足以发现问题,问题的描述有待进一步具体。
建议:在程序中插入性能测试点,找出性能瓶颈。
chenxdb 2007-04-06
  • 打赏
  • 举报
回复
估計是數據庫的 ,用Profiler跟蹤分析一下。
liujiwe79 2007-04-06
  • 打赏
  • 举报
回复
程序是该升级了
九章落地 2007-04-06
  • 打赏
  • 举报
回复
TO:houyichong(喜欢坐在海边静静的看海)
如果是数据库设计得不好导致,为何系统慢的时候,通过查询语句读取数据又很快呢???


呵呵,大家都是在数据库这边找原因,但是不是有可能VB语言本身的限制呢?
或是RDO连接方式本身的瓶颈???

RDO是较早的数据库连接方式吧,不知它的性能如何....
九章落地 2007-04-06
  • 打赏
  • 举报
回复
TO:gslcn(聂风)
谢谢你的意见!
该软件确实是一直运行,并不断更新升级,但都是经理一个人往里面添内容,我们下面的人只是用.net写一个外部的相关的程序非常该软件功能.之前确实出现过,更新一些功能后系统变量的问题,但基本都已解决.

现在软件应该是遇到了瓶颈,但就是不知道问题出在哪儿.我们这边并非软件公司,程序员的水平都比较有限,所以才迟迟分析不出原因来.

很无奈呀!!!
houyichong 2007-04-06
  • 打赏
  • 举报
回复
如果不是网络速度,服务器硬件瓶颈的话就一定是数据库设计得不好,没有使用事务和灵活使用锁
gslcn 2007-04-06
  • 打赏
  • 举报
回复
根据你的描述可知,系统一直在运行,并不断升级.那么导致问题出现可能有两个原因:
1.系统升级导致问题的出现.
对最近修改过的代码进行测试,查找问题所在.
2.系统长时间运行后出现系统瓶颈.
主要是业务量的增加,数据量的增加和用户数的增加可能导致瓶颈的出现.建议进行全面的性能测试,查找系统瓶颈.建议组织几个熟悉系统的技术人员在实际系统中进行测试.
九章落地 2007-04-06
  • 打赏
  • 举报
回复
To:shalen520(Love will keep us alive)

是在软件速度很慢的时候,单独执行存储过程并不慢.
请问,多人执行存储过程为何会慢呢???SQL SERVER不是支持多连接吗?

To:Red_angelX(八戒),zhangliu_521() ,danjiewu(阿丹),shadow841112(孤风)

我们经理是个非常喜欢编程的人,虽然他是经理,负责全国六个分公司资讯部的管理,但他的时间大部分都是在写程序.在我看来,他确实是个很有人格魅力的领导者.

TO:yf110()
对于这个曾经和他讨论过,但他说他的程序里并没有大量使用事务.

TO:coconutyf(椰子)
速度是突然慢下来的,代码太多,很难调试.


期待高手现身说法!!!
再次感谢!
coconutyf 2007-04-06
  • 打赏
  • 举报
回复
还是先把日志代码补上,然后根据日志找到到底在那些调用上耗时较大,解决问题的根本是发现到底是什么地方出了问题,是数据库锁还是其他?在没找到问题之前,所有的解决方案都建立在假定基础上,没什么意义.
yf110 2007-04-06
  • 打赏
  • 举报
回复
可能使用了大量的事务,SQLServer处理事务的时侯会把数据库锁住的,所有对于某些需要人机对话的部分不能使用事务。
hawk5456 2007-04-06
  • 打赏
  • 举报
回复
用跟踪器看看
younglady 2007-04-06
  • 打赏
  • 举报
回复
不是自已寫的不好找原因啊。
y1x12z8 2007-04-06
  • 打赏
  • 举报
回复
用存储过程要小心啊
gslcn 2007-04-06
  • 打赏
  • 举报
回复
这种情况只能一项一项排除了.
建议以天或者周为周期连续监测系统资源的使用情况,主要是网络资源,内存,cpu,计数器,连接数等。并记录系统出现问题的时间。然后分析检测结果,找出瓶颈。
如果不是硬件问题,同时又能排除数据库引起问题的可能。那就只能让你们经理自己去查程序了。通过以上的监测,至少能确定问题涉及的模块以及程序段,尽量缩小范围让他慢慢查吧?
^_^
wudipankaihua 2007-04-06
  • 打赏
  • 举报
回复
Profiler跟踪下, 看看多人运行时SQL和存储过程哪快比较慢,再进行性能调优吧。
一般不会是程序的问题,你不是说少数人运行时候比较快,人多了就慢了。主要还是从数据库着手!
shalen520 2007-04-06
  • 打赏
  • 举报
回复
sql server确实支持多连接,问题是,服务器的处理能力是有限的,如果一下子同时来了多个请求,形成一个峰值,那么速度肯定会慢下来,单个请求的处理时间一定会变长

用系统监视器监视一下sql相关的性能计数器,特别是lock,Memory,Transaction,connection等

然后梳理一下主要业务流程,做一个测试程序,进行压力测试,得到服务器的性能基准值;

比较监视得到的数据(特别是峰值)和基准值,得出结论
xxelement 2007-04-05
  • 打赏
  • 举报
回复
升级吧
shadow841112 2007-04-05
  • 打赏
  • 举报
回复
。。。。八年

一个人工作寿命有几个八年
lxwin01 2007-04-05
  • 打赏
  • 举报
回复
认真检查操作的对象,不同的操作创建不同对数据库操作的实例,很多人有时喜欢开发对象数据库操作的单例,在封装数据库操作对象时要么创建新的实例,要么在初始化创建对象池。
danjiewu 2007-04-05
  • 打赏
  • 举报
回复
60W....
一行代码一块钱也够了啊
加载更多回复(25)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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