阿里云虚拟主机网站耗资源的原因及解决方法
客户问题:
阿里云虚拟主机网站耗资源的原因及解决方法
凯铧互联技术回复:
阿里云共享虚拟主机(例如现在售买的渠道版主机,万网M3,G享主机等)因是一台云服务器放置N个网站虚拟空间很容易出现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.fid=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以上),性能就可能会出现问题,所以访问量大的网站一般都采用SQL Server、MySQL、Oracle等性能比较高的数据库引擎。
4、数据库的索引设置问题
一个表至少有一个主键和N个外键,一般主键作为表的唯一标识。当检索数据时,如果以主键的值来进行查找的话效率会比较高,而一些标志性的字段,例如产品表的产品所属分类、用户表的用户等级等,在程序中经常要用到这些字段来进行检索数据。那么,一般应该给这些字段建立索引,这样检索数据的时候性能会好很多。
本文适用于:
阿里云虚拟主机
以上就是阿里云虚拟主机网站耗资源的原因及解决方法的说明。阿里云代理商凯铧互联提供阿里云服务器/企业邮箱等阿里云全线产品的代购服务,为您提供阿里云产品专属优惠折扣,通过凯铧互联购买可以获得折上折,若您需要帮助可以直接联系我方客服!同样的品质,更多贴心的服务,阿里云代理商凯铧互联专业技术团队同时为您提供便捷专业的7x24一对一专业全面的技术服务。 电话专线:136-5130-9831,QQ:3398234753。
为什么选择我们:北京凯铧互联科技有限公司(简称凯铧互联)由多名前阿里云资深技术专家创立,核心员工来自阿里巴巴、腾讯等,作为阿里云,华为云,腾讯云,百度云,金山云,华为云重要的合作伙伴,专注于为企业用户提供云计算及基于云服务器的解决方案。总部设在北京,并在内蒙设有办事处。做为一家综合性方案商,凯铧互联向各行业用户提供基于云服务器的各种解决方案。为用户获得优质服务的同时,秉承"专业规划、周到服务"的服务理念,根据用户的实际情况,充分考虑各种网络资源的特点及功效,为用户量身定做一套适合于其实际应用需求的网络应用方案。帮助用户利用互联网的力量展开新的营销方式,并大大缩短了项目实施周期,获得用户的一致好评。