一次系統效能最佳化筆記

來源:互聯網
上載者:User

項目背景:

國有大型電信企業的一個簡訊增值項目,目前要求日處理資料量20萬,以後處理量在100以上。

目前狀況是:日處理極限為5萬左右。在簡訊峰值時,由於資料堆壓資料運行變慢。

 

第一次白盒程式碼分析

1 ,根據壓力測試中資料連線過多問題進行分析

 問題原因:

     對啟動並執行各個子項目沒有啟動Oracle串連池

重構方式:

對啟動並執行各個子項目進行資料連線池,和串連數限制。

 

 2 Coding檢查:

 程式中資料訪問層使用代碼鎖保證資料完整性。

 其次程式中一個事物實現是通過代碼逐個執行Sql語句

 

現象後果:

 並發訪問效率低下

 應用伺服器和資料庫服務不斷的進行IO讀寫

 

重構方式:

 預存程序完成完整事務,資料庫表鎖定代替代碼鎖定。

 

3 分析資料庫的業務操作SQl運行效率

 問題:

   對常用的排序的表的欄位沒有進行索引。對於資料庫量大的表操作,索引相當重要。

重構方式:

 對常用的排序欄位進行索引。

 

4 執行查詢語句,剔除Like 查詢和子查詢

 

 

 第二次 壓力測試

 1 測試結果發現測試使用者頻繁讀取某張業務表,處理業務。

 重構方式:

 用應用伺服器的記憶體空間去換使用者訪問時間

 具體的做法為;

 在後台起一個緩衝,把資料庫中的業務表預先讀取到緩衝中,這樣使用者直接從緩衝中讀取業務資料,而避免了頻繁訪問資料庫的業務表。

 

 2 壓力測試問題:查詢報表業務中,添加新動作記錄記錄時間,查詢日誌資訊時間過長。

 

 原因:業務動作記錄表過大。目前每次操作的日誌表每天的增量在10萬左右

 

重構方式:

 對日誌動作表進行分表,一張表:放當天日誌操作資訊

                       另外一張表:放當天以前的日誌操作資訊。

 日誌查詢只提供當天以前的日誌查詢業務,不支援當前的日誌查詢。

 

對常用的日誌統計資訊,進行定時運算並儲存對應的統計資訊。

這樣日誌統計時,不需要即時資料庫運算統計。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.