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-阿裏雲