恐怖的大富翁源代码?(200分)

  • 主题发起人 主题发起人 温柔一刀
  • 开始时间 开始时间
我是有时快有时慢,但是我的很多朋友说基本上很难上来,还有一个和我同一个办公室的居然
从来没上来过。 :)
 
我已经给yysun留言了,留言板是有自动email通知的,暂时先等待吧!
 
抱歉,刚刚看到这个帖子。谢谢一刀。
好象看到过有文章说 ADO 对象系统会负责的,所以只释放了自己做的对象。

我还是觉得大富翁的问题不在服务器,而是在路由器。
 
yysun说得对,对于这类型得语言都是如此处理得。在PHP中,如果你使用sysvsem得sem_acquire
不管你得流程如何,程序会自动帮你sem_release.
(提醒:你不能在每释放sem_release前不要sem_acquire,否则这个线程必死无疑,估计是PHP4的Bug)
 
ADO是可以自己释放对象的!但是,等它自己释放要过多久?

顺便问一下,大富翁的服务器是什么配置?什么操作系统?这样也不死机?
 
>>好象看到过有文章说 ADO 对象系统会负责的,所以只释放了自己做的对象。
我看到的文章没有一篇是这样说的,我看到的所有其它源程序也没有一个是
不自己释放对象的,是不是请您再确认一下?
我相信应该加上,至少是有好处,就像shangcm说的。

>>我还是觉得大富翁的问题不在服务器,而是在路由器。
您没有看到上面有人说在ecnu内部访问大富翁也慢得要命?这也是路由器的问题?

这个问题以前也讨论过的,(Pipi.的贴子也说过),我这里访问大富翁的主页
以及大富翁上任何其他.htm的网页从来都是很快的,包括根本进不了大富翁的时候。
而一旦是ASP的网页,就会彻底没反应 -- IE中会立刻显示“网页已找到,等待回应”,
然后就毫无反应。我相信这一切都说明这是服务器的问题,望继续讨论。

关于路由的问题,我在聊天的时候也和别人说过的(没有在贴子里):
路由的问题确实存在,而且也经常发生(今天我写这个贴子的时候就是这样),
因此大家都知道,也都相信,而这恰恰掩盖了论坛服务器/程序本身的问题。
 
不如实验一下,反正我在vb里是自己set myworkspace=nothing的。
 
g622:
在VB中当然是要释放的了。在这种高级Script语言,特别是在Web上使用的ASP,PHP等都
是可以不释放。当这个页面的Script运行完毕后,系统(IIS,PHP Module)会自动释放。我
认为,系统(IIS,PHP Module)会记录你在页面的超作(与资源有关的)。PHP的部分原码
我看国。
其实,可以这样证明(ASP,PHP):
如果要我们人工释放对象,如果程序在运行过程中,如果运行错误,如 div 0, other
exception等,对象如何释放。对于24小时运行的程序,这是不可想象的。如果你市写IIS,
PHP Module的作者,我想你也会考露记录在这个页面的资源使用情况。

在IIS中,我猛使用Set ...=nothing是为了尽早释放内存而已!
 
我只是感觉近两个星期特别慢,其他时候还是很快的,但是有一点,ASP 网页比 Html
的确要慢的多,一个明显的例子就是,很多时候登录不进去,但是欢迎页上的“规则说明”
依旧出来的很快!我认为主要原因并不是路由或者带宽。
 
前卫兄,你想证明什么,我怎么糊涂了?
你的证明太不符合逻辑了,照你的证明,VB中应该也不需要释放,
Windows难道不能替我们做么?你作为windows/ADO的设计者,难道就不考虑
24小时运行、div 0,other exception?所以程序在怎么样也不能释放干净,
干脆由系统代劳,搞成Java虚拟机算了。

言归正传,我想系统可能是会自动释放的,但是多长时间呢?
一旦还没来得及释放,新的申请又在疯狂增加,系统是不是还会出问题呢?
而这会不会恰好解释了大富翁毫无规律性的时好时坏呢?
总之不管怎样,我看加上之后再看看效果吧?
 
我对asp的经验只局限与书本和几个很小的实验 所以我不敢确定
沈前卫 这里讨论的本来就是效率问题 :)
觉得测试一下比较好 找个服务器写段访问本地数据库的asp,然后用另一台机器的程序不断
提交,统计完成速度 比较一下。
 
温柔一刀:
我只是想证明"当这个页面的Script运行完毕后,系统(IIS,PHP Module)会自动释放".
用的是反证法。

》你的证明太不符合逻辑
好象没四么不和服逻辑的。见下面。

》 Windows难道不能替我们做么?
Windows确实帮我猛做,但是他是在程序退出时做。所以,在VB程序中,如果我猛程序
要长时间运行,那么程序必须自己释放,否则系统资源将好竟。(LDT就是用来记录程序站用
的系统资源。)

我的意识是IIS,PHP会在每个爷面运行完毕就释放本爷面说使用的资源。(每个爷面的运行
是在一个线程/进程).


系统慢,我想可能与数据库有关,你看原带吗中有许多的join,现在真个网暂的数据又比较
大,join是比较费时间的。当然还有其他的问题(辕马很就每看,如有出入,请更正)

(我建国2万join2万join2万的,MySQL花了一小时还没完成(一个用户超作) )

错字与说的不清楚的地方,请见谅.
 
>因此大家都知道,也都相信,而这恰恰掩盖了论坛服务器/程序本身的问题。
这是我最担心的.
我一直以一下1个现象,2个理由对自己说路由器的问题大于程序本身的问题。

现象
我在美国,加拿大,泰国 连接大富翁都不需要代理,通过澳大利亚,日本,美国的代理
连接大富翁比从上海连接快得多.

理由1
基于tracert / visual route的测试结果,大家连接大富翁的路线是。
中国/国外任何地方 -*-> 北京 -> 上海 -> 北京 -> 大富翁
而我们现在使用cookie的方式,需要多次交互,以验证密码.
无缘无故,会绕上很多圈.

理由2
前一段时间,静态网页出来,而asp出500错误,或者很长时间出不来是因为超时参数设坏了,
因为以前老是出现脚本超时,所以我把IIS超时参数设置得很大,结果反而把IIS整死了,
参数改会来以后,已经一个多星期没有重新启动过了,IIS还没有死.

我知道,并计划改变的程序内容(按优先级排)为:
1.减少碎片
有报道说用 字符串相加,最后一次输出,
ss="<td>" & RS("x") & "</td>"
response.write ss

<td><%=RS("x")%></td>
要快
2.把分类列表做成静态的.
3.集中ADO对象的创建.
4.改变cookie的使用方式.
5.改进界面.

老实说,其中并没有计划释放ADO对象的计划,因为我还指望不加释放时,ADO/ODBC能提供某种
pool功能呢.今天我需要再查一下资料以确定不释放ADO对象的害处,然后向大家通报结果.
如果不能证实: 不释放ADO对象没有害处,我会立即释放他们.

目前我们正在计划服务器的迁移,同时准备梳理一边程序,所以欢迎大家多提意见.我一定改正.
 
当然越早释放越好,这样其他页面可以使用这个数据库连接。
ADO/ODBC好象都支持object pool.
 
>干脆由系统代劳,搞成Java虚拟机算了。
这也不错嘛,好象CJ很喜欢这个,嘿嘿……
 
我在教育网,连接速度33。6感到速度还可以。希望一刀与sun就delphi开发
asp介绍一些经验,dfw就很不错么!嘿,希望多些人关注电子商务的开发!
 
http://msdn.microsoft.com/workshop/server/asp/asptips.asp#asptips_adosql

Tip 8: Acquire Resources Late, Release Early

Here’s a short tip for you. In general, it’s best to acquire resources
late and release them early. This goes for COM objects as well as file
handles and other resources.
ADO Connections and recordsets are the prime candidates for this optimization.
When you are done using a recordset, say after painting a table with its data,
release it immediately, rather than waiting until the end of the page.
Setting your VBScript variable to Nothing is a best practice.
Don’t let the recordset simply fall out of scope. Also, release any related
Command or Connection objects. (Don’t forget to call Close() on recordsets
or Connections before setting them = Nothing.) This shortens the time
span in which the database must juggle resources for you, and releases the
database connection to the connection pool as quickly as possible.
 
to yysun:您贴上来这段正好说明应该立刻释放吧?可见我所言非虚?

而且您应该注意到大富翁的每个查询叶面都是单独生成新的recordset,
因此旧的不释放也绝不可能有什么pool的功能在里面。

另外,关于您说的“一个现象”,我不能同意,这个前面已经说过了,
我现在就是通过境外的代理上大富翁,但是速度很快,这根本不是我提这个问题的原因,
我说的是根本连接不通的时候。同理,“理由1”也没什么太大的关系;

理由2我看是比较重要,也许前几天是因为这个原因,这两天明显没有再发现问题了。
不过不管怎样,立刻释放对象看来应该是共识了 :-)
 
是的,一刀,您提出 释放ADO 对象,不是针对连接慢的问题,而是IIS死掉的问题。
可是,现在我就是没有释放ADO 对象(soul也是),IIS倒也不死 :)
看来, IIS 中对此是有些处理手段的。
>而这恰恰掩盖了论坛服务器/程序本身的问题。

当然,既然微软老祖宗都说,ADO 对象要“晚用早放”,那我就立即动手,
全部 set -〉nothing. 正好要去芝加哥出差2天,路上作为消遣。

一刀又给我上了一课,谢谢!

眼下最重要的还是“连接慢的问题”,程序再快也没有用,只有换线路,离开教育网。
 
后退
顶部