2010-05-27 38 views
0

我被要求縮短一個很長的開始應用的啓動時間,但是我也有義務讓我的經理知道我的時間量將減少啓動 - 大約10-20秒。我被要求將一個很長的開始應用調整到一個很短的時間段

因爲我是我公司的新人,我說我可以在幾個月的時間內承擔責任(它是一個大型服務器,我是新的,我計劃做懶惰負載+性能調優)。

答案沒有被接受我被要求做一些緩存來保存重要的數據在另一臺服務器,然後當我的服務器啓動時,它會從該緩存中的所有數據 - 我覺得它是一種解決方法,我不太喜歡它。 你喜歡它嗎?

你認爲我應該怎麼做?

PS當我剖析應用程序時,我看到許多小問題使得啓動時間很長(如2分鐘),但這不是一個修復所有問題和延遲加載的簡短流程。

任何類型的建議都會有所幫助。

語言是Java。

謝謝

+2

請格式化一下。 – clyfe 2010-05-27 07:04:45

+0

赫赫,clyfe在1995年的聲望 - 5多,你可以編輯這個問題,以適當的格式。讓我去找一個漂亮的貼子和+1它:) – Konerak 2010-05-27 07:07:20

+0

像往常一樣,找到那些消耗大部分時間*和*是最容易解決和修復它們的問題 - 它速度很快,並會顯着提高性能。 – sharptooth 2010-05-27 07:11:02

回答

5

規則之一的性能優化:衡量它。獲取硬數字。在優化的每個階段,衡量績效增益/損失/缺乏變化。您(和您的管理人員)在嘗試並測量之前無法說特定的優化將會或不會工作。在實施之前,您總是可以要求測試&度量解決方案。規則二的性能優化(或任何真正的):選擇你的戰鬥。請記住,您的管理人員可能對相關係統非常有經驗,並且可能已經知道正確的解決方案;可能還有其他一些事情(政治)也涉及到,所以不要在這一點上讓你的位置處於危險之中。

+0

謝謝!但我發現自己處於相同的位置,認爲我最好去選擇1,經理更喜歡選項2,我不能提前選擇義務,因爲我無法確定我能改善多少性能... 感謝您清除積分,如果有更多的提示,我會很高興聽到... – Jas 2010-05-27 08:22:43

0

我同意MatthieuF。最重要的是測量它。然後,您需要分析測量結果,以查看哪些部分成本最高,以及哪些資源(內存,CPU,網絡等)是瓶頸。

如果你知道這些答案,你可以提出解決方案。您可能可以創建小解決方案(概念證明),以便您可以儘早向經理報告。

可以有各種解決方案,例如購買更多硬件可能是最好的方法。購買更多硬件也可能沒有結果,您需要進行修改。修改可以是優化軟件,數據庫或其他軟件。可能會選擇更好的算法,引入緩存(犧牲更多的內存使用量)或引入多線程來利用多個CPU內核。您還可以對應用程序的「環境」進行修改,例如操作系統的配置/版本,Java虛擬機,應用程序服務器,數據庫服務器等。所有這些組件都有可能影響性能的設置。

同樣,測量,識別問題,考慮解決方案,構建解決方案(可能用於驗證概念)以及衡量解決方案是否正常運行非常重要。不要陷入在不知道問題的情況下選擇解決方案的陷阱。

0

這聽起來好像你進入了一個相對較低的位置,而你的經理們還沒有相信你的能力和判斷力。

我不明白他們爲什麼希望你承諾特定的加速而不知道它是否可以實現。

  • 也許他們真的瞭解代碼及其問題,並知道某種程度的加速是可以實現的。在這種情況下,他們應該有一個好主意如何去做...所以試着讓他們告訴你。即使他們的想法不是很好,但至少會給他們一個嘗試,你會獲得讚譽。

  • 也許他們只是試圖施加壓力(或傳遞施加在他們身上的壓力)以讓你更加努力地工作。在這種情況下,我可能會給他們一個有價值但保守的估計。 然後花一些時間更徹底地調查問題。如果經過幾天的研究,你會發現你的「袖口」估計值顯着偏離標準,請回到經理人處,以獲得更準確的估計。

在技術方面,兩分鐘的啓動時間聽起來對我來說太過分了。什麼是應用程序一直在做什麼?從文件或數據庫加載數據結構?重新計算的東西?分析可能有助於回答這些問題中的一部分,但您還需要了解系統的體系結構,以便了解配置文件統計信息。

不知道真正的問題在這裏,我會建議儘量讓服務在後臺進行一些不太關鍵的初始化,或者懶洋洋地進行。 (如果從這個角度來看,你的經理們緩存一些重要數據的想法可能會變得很好)。或者,我會看看是否可以爲系統實現「熱備份」,或者複製它可以讓你減少啓動時間。

+0

從文件或數據庫加載數據結構? 主要根據數據加載數據和初始化東西。 分析顯示許多許多操作(幾十個操作沒有明確減少幾個事情,如果我減少他們我達到目標啓動時間) 似乎我沒有迭代迭代的奢侈,也有資深人士告訴我那很難做到這一點,也很複雜。 – Jas 2010-05-27 12:53:19

相關問題