專案背景:
國有大型電信企業的乙個簡訊增值專案,目前要求日處理資料量20萬,以後處理量在100以上。
目前狀況是:日處理極限為5萬左右。在簡訊峰值時,由於資料堆壓資料執行變慢。
第一次白盒**分析
1 ,根據壓力測試中資料連線過多問題進行分析
問題原因:
對執行的各個子專案沒有啟動oracle連線池
重構方式:
對執行的各個子專案進行資料連線池,和連線數限制。
2 coding檢查:
程式中資料訪問層使用**鎖保證資料完整性。
其次程式中乙個事物實現是通過**逐個執行sql語句
現象後果:
併發訪問效率低下
應用伺服器和資料庫服務不斷的進行io讀寫
重構方式:
儲存過程完成完整事務,資料庫表鎖定代替**鎖定。
3分析資料庫的業務操作sql執行效率
問題:對常用的排序的表的字段沒有進行索引。對於資料庫量大的表操作,索引相當重要。
重構方式:
對常用的排序字段進行索引。
4執行查詢語句,剔除like查詢和子查詢
第二次壓力測試
1測試結果發現測試使用者頻繁讀取某張業務表,處理業務。
重構方式:
用應用伺服器的記憶體空間去換使用者訪問時間
具體的做法為;
在後台起乙個快取,把資料庫中的業務表預先讀取到快取中,這樣使用者直接從快取中讀取業務資料,而避免了頻繁訪問資料庫的業務表。
2壓力測試問題:查詢報表業務中,新增新操作日誌記錄時間,查詢日誌資訊時間過長。
原因:業務操作日誌表過大。目前每次操作的日誌表每天的增量在10萬左右
重構方式:
對日誌操作表進行分表,一張表:放當天日誌操作資訊
另外一張表:放當天以前的日誌操作資訊。
日誌查詢只提供當天以前的日誌查詢業務,不支援當前的日誌查詢。
對常用的日誌統計資訊,進行定時運算並儲存對應的統計資訊。
這樣日誌統計時,不需要實時資料庫運算統計。
記一次系統效能優化
用thinkphp3.2.3做了自己的畢業設計,上線使用後發現,響應時間比較長,經過檢測後發現是sql的查詢時間太長。這裡要感謝系統效能監控平台聽雲,他們的官網是 它能檢測到不正常的web請求 不正常的sql查詢 接著就是對mysql資料庫進行查詢的調優,筆者這裡採用建立索引的方法。什麼是索引以及索...
系統效能優化(一)
我們都知道在實際做專案時,有一條 原則,就是先實現其功能,在優化其效能。當我們功能都沒有實現的時候,就考慮其效能優化,想一次性就寫出效能最好的方案,顯然是非常有難度的,所以我們先將其功能實現,再逐步優化。假設現在我們想實現乙個最基礎的相關錯題複習的功能,如我們在網上進行刷題的時候,當我們做錯一到題目...
優化系統效能
程式框架 hibernate3 struts2 spring2 資料庫 sqlserver2008 伺服器 tomcat6 優化方法 1 配置連線池 採用的c3p0連線池 2 在程式中獲取列表時,用iterator代替list 3 在查詢之後可以使用session.clear 方法釋放快取 4 用資...