閱讀305 返回首頁    go 魔獸


網站耗資源和腳本超時常見原因分析__網站訪問異常_技術分享_雲虛機主機-阿裏雲

問題描述

獨享雲虛擬主機與共享雲虛擬主機出現耗資源cpu跑滿,或者因為耗資源被關停。

問題原因

1、程序出現死循環。

2、程序有嵌套查詢。

3、采用access數據庫,數據庫較大。

4、數據庫索引較差。

以上問題都會引起服務器資源浪費,甚至耗資源異常情況。

解決方案

1.程序死循環。

  1. 出現死循環很多情況下是因為程序缺少必要的檢測和判斷條件導致,這種情況需網站開發對站點程序的代碼進行檢查和完善。

2.程序有嵌套查詢

  1. 嵌套查詢代碼示例:
  2. sql = "select * from a"
  3. set rs = server.createobject("adodb.recordset")
  4. rs.open sql,conn,1,1
  5. while not rs.eof
  6. sql2 = "select * from b where fpln"> & rs("id")
  7. set rs2 = server.createobject("adodb.recordset")
  8. rs2.open sql2,conn,1,1 '使用嵌套查詢,效率會出現下降
  9. while not rs2.eof
  10. response.write rs("id") & "=" & rs2("name")
  11. rs2.movenext
  12. wend
  13. rs.movenext
  14. wend
  15. 嵌套查詢會造成數據庫的查詢量呈指數級上升,導致一個程序的效率非常低,上麵的程序如果改為連表操作,查詢數據庫的次數會少很多,並且在設計數據庫的時候應該將 b 表的 fid 字段建立索引,否則連表查詢的時候性能會差很多。
  16. <%
  17. sql = "select a.id ,b.name from a left join b on b.id=a.id" '使用連表操作,並用具體的字段名代替 *,程序是高效很多
  18. set rs = server.createobject("adodb.recordset")
  19. rs.open sql,conn,1,1
  20. while not rs.eof
  21. response.write rs("id") & "=" & rs("name")
  22. rs.movenext
  23. wend
  24. %>

3.網站采用 access 數據庫,數據庫的容量比較大

  1. 如果采用access數據庫,當數據庫的容量比較大(比如超過 100M 以上),性能就可能會出現問題,所以訪問量大的網站一般都采用 sqlserver、mysql、oracle 等性能比較高的數據庫引擎。

4.數據庫的索引沒健好。

  1. 一個表至少有一個主鍵和N個外鍵,一般主鍵作為表的唯一標識。當檢索數據時,如果以主鍵的值來進行查找的話效率會比較高,而一些標誌性的字段,如產品表的產品所屬分類、用戶表的用戶等級等,如果在程序中經常要用到這些字段來進行檢索數據,那麼一般應該為這些字段建立索引,這樣檢索數據的時候性能會好很多。

最後更新:2016-07-20 17:39:17

  上一篇:go 主機新手使用指南__管理控製台_使用指南_雲虛機主機-阿裏雲
  下一篇:go 使用chrome瀏覽器排查網頁打開慢的方法__網站訪問異常_技術分享_雲虛機主機-阿裏雲