0261期:多層次(Multi-Tier)程式設計的效能瓶頸

作者:CGS •  日期:2008/03/22  •  類別: 程式漫談 ;•Friendly Print ;•

  

因為之前還在負責實作新系統其他部份的程式及修正資料,所以將跟前端網站的資料交換交給另一位同事實作,因為整個架構是第一次撰寫,所以資料交換的速度似乎存在很多的問題,讓前端查詢資料時,速度拖慢了許多。

慢慢檢視一部份的程式,我才慢慢解開這些效能的謎團,原本因為我初期只撰寫一部份示範程式,某些變數我是用整體變數處理,因而需要取得和鎖住特定的 Critical Section,但是如果同時有許多查詢式,就會造成排隊很久的現象,我請同事改成動態取用程式內的區域變數,就可以減少不必要的 Critical Section,讓排隊的現象減少而舒緩。

接下來針對複雜的查詢式,由原本多的 SQL 命令改為單一個命令,並對主要查詢欄位建立索引,這時查詢速度已經慢慢增快了,但是離我們的目標速度大概還是四倍左右。

我自己以 Delphi 寫作一個模擬前端程式來存取我們的交換 API,與網站間存取存在 1 秒鐘左右的時間差,後來才發現是網路存取介面的實作層有些問題,我們有提供資料流的長度,前端可以在取得相當資料後,即行斷線,而不用等 Timeout 才斷線,就可以變的更快。

最後我也發現原本我們的程式會在後端 Application Server(AP) 沒啟動時,自動啟動 AP,但查詢結束後,APServer 也會關閉,如果先開啟 AP,就會降低這部份的問題,最後才提高整個效能到可以接受的程度。

由於多執行緒的程式在除錯時有很多的限制,加上多層次的複雜性,跟一般的程式概念有部份的差異,所以找起問題要花上更多的時間,只是我想只要有心就可以慢慢抽絲撥繭,找到你想要的問題根源。

« 上一篇文章下一篇文章 »

Add this page to MyShare  Add this page to Hemidemi  Add this page to Yahoo  Add this page to FunP  Add this page to udn  收藏到Fiigo書籤  加入此網頁到 YouPush  Diigo it  Add this page to del.icio.us
引用
目前沒有任何引用.
使用 引用文章網址l 來通知本網站關於您的引用文章(按右鍵,複製捷徑).
引用本站文章需經過人工審核 ,所以如果你的引用沒有馬上出現 ,請稍待站長處理 .
如果你的部落格不支援引用 ,你可利用 此視窗手動加入你的引用.

留言

沒有任何評論 ,您可以寫下您的意見!

留下你的意見