如何解決有限的資源和運算能力分配問題

KenWT發表於2011-12-22
近日在工作上遇到這麼一個問題,我們公司的應用在現場伺服器環境中執行中,發現了一些問題,比如一個完整產品的某個模組處理資料的進度在產品升級後變得較之前緩慢,甚至在重新整理資料方面完全失效,進而導致前臺報表沒有展示出近期的業務資料。在解決開始階段,就遇到了現場的資料庫超過最大連線數的情況,所以無法對失效的資料庫物件進行更新等操作。無奈之下,現場運維同事就協助對資料庫進行了重啟,重啟之後,資料庫恢復服務。緊接著,主管召集大家開會,探討針對這些執行中的問題的解決方案,一番討論之後,結果,解決方案全是針對程式的邏輯處理過程的最佳化,其實這樣的最佳化,相對目前版本來說,從程式層面來講,理論上完全可以改善目前所暴露的問題。但是有這麼一個資訊,就是這次伺服器上部署了多個應用,而且資料庫也是公用的,這就自然而然地產生這麼一個問題,產品在公司釋出前,實驗室的測試環境是一臺伺服器和專用資料庫,結果沒有測出某模組處理資料進度比預期慢的問題;而產品實際的執行環境中有數個應用在執行,準確地講,是多個應用在共享有限的伺服器資源和資料庫的運算能力,從而產生了目前所出現的這個問題。

從問題表面上,可以這麼簡單地理解,就是因為程式執行所需要的資源出現了緊缺,所以在完成任務的過程中出現了異常。那麼應用們在執行中,是如何爭奪資源和運算能力,這些有限的伺服器資源和資料庫的計算能力又是如何分配給應用的呢?應用以目前的水平,在擁有多少資源和運算能力下,可以很穩定地執行呢?如何這個問題可以得到一個準確的回答,那麼最佳化方案方面結合程式範圍的解決方案的話,應該就是一個相得益彰,相當有成效的最佳化。這就是我今天想請教大家的問題?謝謝大家

[該貼被admin於2011-12-23 09:21修改過]

相關文章