Asp操作Access数据库时出现死锁.ldb导致网站访问缓慢的问题描述
最近asp网站出现数据库错误,在ftp登陆后发现原来的后缀MDB文件多了一个后缀LDB文件,是自动被锁,在一天某个时间段内打不开,等待好几分钟就会说asp脚本超时,但FTP可以登陆进去,查看数据库目录时,发现与数据库(数据库是access数据库)同名的记录锁定信息文件 (.ldb文件)一直都在那里于是我登陆主机的管理面板,重启了网站服务,ldb文件就消失了,网站打开也正常了,但过了数小时后,网站又再次出现以上情况。
Access数据库时出现死锁.ldb问题的原因
.ldb的文件是ACCESS读写的时候的临时文件,当前台asp调用网站数据库的时候就会自动产生ldb文件,调用结束后就没有了!
可当有时访问量大的时候(或数据量大),asp程序运行时间太长(有时会超过iis所设置的asp超时时间),这时,服务器会结束掉asp进程,而asp所打开的ldb文件则卡在那里关不掉了! 所以就会“卡”。
Access数据库.ldb导致网站不能访问的解决办法
一.服务器空间改进
你的程序多,数据库多,IIS要使用不限制的,并且CPU分配的要多一点好,否则依然会“卡”。
如果你的这些程序放在**的服务器上,是没问题的。但是一般的空间可能就不行了,别人不卡是因为别人就一个博客程序,建议更换资源分配较高的空间。
.ldb的文件是ACCESS读写的时候的临时文件,只要读写ACCESS文件就会生成.
对于个人站来说还是合租服务器划算买空间做个人站只适合做着玩玩,要投广告运做的话还是要用服务器.
另外一方面就是尽量优化你的页面.比如生成静态页面了(你的CPU占用少才1%)静态页面相对好点.再或者用什么DIC+CSS做页面呀这样不怕你卡了.最少访客不会盯着你的大白页面呆着.
二.访问数据库的程序优化
主要都是因为对数据库存取完后,没有及时释放记录集和断开数据库连接
rs.close
set rs=nothing
conn.close
set conn=nothing
<%
dim conn
dim connstr
dim db
db="database/data.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath(""&db&"")
conn.Open connstr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "服务器正在维护,请稍后再试。"
Response.End
End If
Sub CloseConn()
'以下是断开数据库连接语句
conn.close
set conn=nothing
End Sub
%>
<!--#include file="conn.asp"-->
<%
sql="select * from table order by id"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
tel=rs("tel")
fax=rs("fax")
end if
'以下关闭并释放记录集语句
rs.close
set rs=nothing
'调用断开数据库连接子函数
Call CloseConn()
%>
三.排除上面的原因之后,如果还没有解决,请尝试以下方法。
用ACCESS打开你的数据库,选择菜单中的[工具]->[选项]->[高级]
更改[默认打开模式]为[共享],更改[默认记录锁定]为[不锁定].
如仍然不行将下面的选项[使用记录级锁定]也取消.
确定后保存,然后打开,修复/压缩数据库.
删除目录中的LDB文件(如无法删除,先结束相关进程或重新启动计算机删除即可)
================================================================================================
网站耗资源(客户程序故障)停权通知
尊敬的客户:
由于贵网站严重影响了服务器性能,因此对您的网站采取了处理措施。我们很高兴能够为您服务,但同时请您严格遵守我们签定的主机合同,以保证我们合作的正常进行,保证我们能为更多的用户提供稳定的主机服务。由于我们是对主机服务器进行实时监控的,出现问题后必须马上采取措施,否则将会导致服务器宕机,所以发出此通知信的同时,已将您的网站暂停,希望您能理解,因此给您带来的不便向您表示深深的歉意。
何谓耗资源(客户程序故障)?
即程序占用 CPU 及内存过多,是对资源的一种浪费。客户使用虚拟主机时程序编写的不合理、错误严重,造成服务器负载急剧上升,极大的影响了正常客户的使用,就是耗资源(客户程序故障)。耗资源(客户程序故障)分为耗用 CPU 资源和内存资源二种。
为什么会出现耗资源(客户程序故障)?
- 程序编写有问题(一般为 ASP 程序变量没有清空)。
- 数据库调用频繁(常见的是 Access 数据库问题)。
- 由于访问量或流量过大导致的耗内存问题引起的耗资源(客户程序故障)(此情况一般为大流量主机)。
耗资源(客户程序故障)的影响。
- 影响较轻的,会使单个客户网站访问慢。
- 严重的会使服务器宕机,服务器上的所有网站无法访问。
耗资源(客户程序故障)处理方法?
通过观察程度客户耗资源(客户程序故障)的程度,进行处理:
- 程度较轻:重启程序池或站点。
- 程度较重:关闭整个站点。
耗资源(客户程序故障)客户的解决办法?
发生占用资源过大问题被关停后,需要排查超额占用资源的具体链接和文件,下面介绍如何排查。
1. 从主机控制台下载关停当天的访问日志文件,具体下载路径:登录 阿里云虚拟主机管理页面 > 管理 > 文件管理 > 网站日志下载 > 下载当天的日志,通过 FTP 打开该日志:
2. 查看日志,下图为示例:
3. 具体排查方法:
- 站点在关停后是没有访问日志的,因此需要查看关停之前的1-2分钟的访问日志。
- 看服务器响应请求的时间,就是访问日志的最后一列,这里的时间单位是微秒,例如上图的示例中,访问时间不到一秒(1秒=1000000微秒),一般访问时间不应超过3秒(3000000微秒),访问时间长同样会导致并发访问量过大,适当的优化程序可以减少服务器的具体响应时间。具体访问的文件也在网站日志中有展示。如上图,如果网站访问日志中的最后一列超过3000000,也就是3秒,则需要检查和优化访问的具体文件,如上图的 test.php。
4. 如果大量的访问来自同一 IP,或是同一 IP 段,网站则可能是被攻击了。
5. 在浏览器种类这一列,如果有 Baidu,Google,Sogou,360 等字样,则表示是有搜索引擎在访问网站,如果影响网站可以配置 robots.txt 文件来禁止搜索引擎访问网站。
耗资源(客户程序故障)与大流量的区别。
- 大流量客户:进行大量的图片下载、广告互换、聊天等工作,造成带宽严重占用。
- 耗资源(客户程序故障)客户:运行自己网站程序,造成服务器负载急剧上升,造成服务器无法正常服务。
- 区别在与大流量客户是网络带宽方面,而耗资源(客户程序故障)客户是对服务器正常运行方面。