305
阿里云
网站耗资源和脚本超时常见原因分析__网站访问异常_技术分享_云虚机主机-阿里云
问题描述
独享云虚拟主机与共享云虚拟主机出现耗资源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 fpln"> & 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个外键,一般主键作为表的唯一标识。当检索数据时,如果以主键的值来进行查找的话效率会比较高,而一些标志性的字段,如产品表的产品所属分类、用户表的用户等级等,如果在程序中经常要用到这些字段来进行检索数据,那么一般应该为这些字段建立索引,这样检索数据的时候性能会好很多。
最后更新:2016-07-20 17:39:17
上一篇:
主机新手使用指南__管理控制台_使用指南_云虚机主机-阿里云
下一篇:
使用chrome浏览器排查网页打开慢的方法__网站访问异常_技术分享_云虚机主机-阿里云
升级流程__购买指导_云解析-阿里云
4.1 Select语句基本语法__第四章 DML_使用手册_分析型数据库-阿里云
查询指定 Topic 状态__Topic 相关接口_Open API_消息队列 MQ-阿里云
为什么我的作业一直失败?__技术分享_技术运维问题_媒体转码-阿里云
iOS生产环境如何测试推送通知功能__IOS SDK常见问题_移动推送-阿里云
OSS防盗链(Referer)配置及错误排除__常见错误及排除_最佳实践_对象存储 OSS-阿里云
输出(Outputs)__模板语法_资源编排-阿里云
处理-数据清洗/ETL__最佳实践_日志服务-阿里云
CDN监控__云服务监控_用户指南_云监控-阿里云
体检修复手册__用户指南_服务器安全(安骑士)-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云