服务器不稳定,网站访问时好时坏
详细解答可以参考官方帮助文档问题描述独享云虚拟主机与共享云虚拟主机出现耗资源cpu跑满,或者因为耗资源被关停。
问题原因1、程序出现死循环。
2、程序有嵌套查询。
3、采用access数据库,数据库较大。
4、数据库索引较差。
以上问题都会引起服务器资源浪费,甚至耗资源异常情况。
解决方案1.程序死循环。
出现死循环很多情况下是因为程序缺少必要的检测和判断条件导致,这种情况需网站开发对站点程序的代码进行检查和完善。2.程序有嵌套查询
嵌套查询代码示例: sql = 'select * from a' set rs = server.createobject('adodb.recordset') rs.open sql,conn,1,1 while not rs.eof sql2 = 'select * from b where fid=' & rs('id') set rs2 = server.createobject('adodb.recordset') rs2.open sql2,conn,1,1 '使用嵌套查询,效率会出现下降 while not rs2.eof response.write rs('id') & '=' & rs2('name') rs2.movenext wend rs.movenext wend 嵌套查询会造成数据库的查询量呈指数级上升,导致一个程序的效率非常低,上面的程序如果改为连表操作,查询数据库的次数会少很多,并且在设计数据库的时候应该将 b 表的 fid 字段建立索引,否则连表查询的时候性能会差很多。 sql = 'select a.id ,b.name from a left join b on b.id=a.id' '使用连表操作,并用具体的字段名代替 *,程序是高效很多 set rs = server.createobject('adodb.recordset') rs.open sql,conn,1,1 while not rs.eof response.write rs('id') & '=' & rs('name') rs.movenext wend %>3.网站采用 access 数据库,数据库的容量比较大
如果采用access数据库,当数据库的容量比较大(比如超过 100M 以上),性能就可能会出现问题,所以访问量大的网站一般都采用 sqlserver、mysql、oracle 等性能比较高的数据库引擎。4.数据库的索引没健好。
一个表至少有一个主键和N个外键,一般主键作为表的唯一标识。当检索数据时,如果以主键的值来进行查找的话效率会比较高,而一些标志性的字段,如产品表的产品所属分类、用户表的用户等级等,如果在程序中经常要用到这些字段来进行检索数据,那么一般应该为这些字段建立索引,这样检索数据的时候性能会好很多。
赞0
踩1