除錯複雜的問題需要有90%的耐性加上利用50%非常好的工具。brendan gregg在10 performance wins中講述了乙個非常引人入勝的故事:乙個團隊如何在joyent這個平台上深入os解決一些奇怪的且相當有挑戰性的效能問題。他們花費了大量的精力,在需要的時候還開發了一些自定義工具和解決方案:dtrace, flame graphs, use method。在對原文進行總括前先附張圖:
除錯前後效能提公升對比圖
下面是對原文觀點的總括:
監控 效能提公升1000倍——監測系統延遲1s,通常1ms,一般都會把這個歸結於網路丟包。當分頁匿名記憶體返回時,應用程式就會被阻止且在檔案系統fsync()呼叫期間,同樣會被阻斷。應用程式配置錯誤或短暫記憶體溢位都會讓網頁掛掉!
riak 效能提高2倍——riak資料庫在移到乙個新系統後,效能會退化一半。erlang虛擬機器需要占用一半cpu,所以cpu仍然是不夠用的。通過配置erlang虛擬機器進行修復。
mysql 效能提高380倍——mysql / percona資料庫偶爾查詢速度會很慢,且沒有明顯原因。另外閱讀速度也比較慢,在儲存控制器上調整快取重新整理時間間隔可以修復這個問題,提公升閱讀速度。
多系統 效能提公升2800倍——大型系統呼叫getvmusage()方法可能需要好幾秒,原因是getvmusage()可以執行乙個比網路服務執行緒略高的服務然後繫結到cpu,導致優先順序反轉和網路資料報未能及時得到處理。
網路堆 效能提公升4.5倍——在系統剛啟動時,網路連線會有所延遲,單cpu在系統中會成為支柱。核心函式呼叫一般比較複雜(通常需要先進行身份驗證),修復最好方法是修改呼叫函式。
資料庫 效能改進20%——資料庫在移動後,執行速度會比以前慢。各個資料庫系統會爭先呼叫malloc方法,這種多執行緒和交叉連線方式會導致效能有所下降。用libumen代替libc進行修復。
資料庫 效能改進10%——資料庫記憶體的不斷增長,從而達到或超過系統記憶體限制,導致效能下降。通過改變分配器可以進行修復。
riak 效能提公升100倍——當bitcask在mmap上被阻塞時,呼叫getvmusage()方法會鎖定一塊位址空間,這樣就會導致tcp監聽下降和riak查詢速度放緩。無需花費太昂貴的技術即可修復。
不同的程式 效能提公升2倍——專案之所以沒有達到預期排程是因為排程程式不能足夠快的調整優先順序。修復的方法就是修改排程應用程式。
kvm 效能提公升8倍——資料報沒有被合併是造成網路效能緩慢的乙個原因。改變計時器即可修復。
在原文中還包含了許多有趣的細節,其中最關鍵的部分是通過對複雜且難以理解的問題進行除錯來不斷提高效能。
阿朱標紅 Tower的十大經驗
一 遠端的好處 遠端工作是什麼和好處?5000 人的公司,他們在公司內部的專案組織方式,也是虛擬的,並不一定坐在乙個辦公室。還有,遠端也並不侷限於公司這個整體,它可以是部分崗位是遠端的,比如美國的 f5 經常需要出差的技術支援,就是遠端的 遠端顯而易見的好處,是 員工可以選擇最有效的方式工作,避免上...
生活的十大經典領悟
1 營養愛情的從來都不是時間,時間只是會營養感情。營養愛情的是感覺,營養感覺的是沒有得到的東西!2 空中的鳥兒,你何必與籠中的鳥兒爭躁,你自有你的天地!3 人生如一杯茶,不能苦一輩子,但總要苦一陣子!4 當你不了解乙個人的時候,你看到的不一定是真的,你心裡所想的不一定是對的!5 窮真的沒什麼,它不是...
十大經典的機器學習演算法
弱人工智慧近幾年取得了重大突破,悄然間,已經成為每個人生活中必不可少的一部分。以我們的智慧型手機為例,看看到底溫藏著多少人工智慧的神奇魔術。下圖是一部典型的智慧型手機上安裝的一些常見應用程式,可能很多人都猜不到,人工智慧技術已經是手機上很多應用程式的核心驅動力。十大經典的機器學習演算法 圖1 智慧型...