Tin's Blog

          You are coming a long way, baby~Thinking, feeling, memory...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            128 隨筆 :: 0 文章 :: 221 評論 :: 0 Trackbacks
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          公告

           
          Tin是一個熱愛收集最佳實踐的程序員。曾經在小型Java團隊中擔任架構師,后在新浪郵件部門領導RIA團隊進行開發,目前是自由程序員,接受Java/ RIA/ RoR項目和咨詢。
          業余時間積極進行敏捷實踐和參與社區討論,對RoR和Django感興趣。在社區中還積極參與開源項目的文檔中文化工作。目前為InfoQ中文站做社區編輯。

          業余愛好:編程、硬件、Mac、美術、音樂(Rock)、電影、攝影、集圖、集郵、Quake3、旅行、美食

          常用鏈接

          留言簿(20)

          隨筆分類(63)

          隨筆檔案(58)

          文章分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          Twitter的水平擴展的一些關鍵點,雖然它是個RoR應用,但是這些建議絕對是放之四海而皆準的,非常好的總結。
          因為年初Twitter曾經遇到了性能瓶頸,而且幾乎束手無策。當初很多人開始懷疑Ruby的性能問題,而后Twitter站起來了 ^__^

          有時間的朋友看看這個slide:http://www.slideshare.net/Blaine/scaling-twitter,沒有時間的看看我的摘要。

          開發:
          1、一定要測試!一定要早點測試!一定要早點測試!否則你就死定了。不要存任何僥幸心理,從項目的開始就寫好測試。
          2、對任何部分都要測試。還是測試!
          3、性能測試要交給用戶來做。那樣才有意義。所以要做好log。用好分析工具:Munin(服務器內存占用監控)、Nagios(服務器服務網絡狀態監控)、AWStats & Google Analytics、錯誤日志、發現了錯誤馬上進入問題跟蹤系統(Trac、Jira……太多了,但是最好有一個)。


          架構:
          1、使用可以分區的架構。按照架構上的功能清晰的分區。這意味著你可以通過替換一個實現來改進性能,因為性能和復雜度往往是不可兼得的。

          對于數據庫:
          1、盡量不要分布式數據庫,包括數據庫分區。最好通過提高單臺服務器的性能提升這個節點的性能。更重要的是查詢優化。通過備份服務器解決單點故障。
          2、對where子句中的字段增加index。(這個當然了)
          3、扁平化查詢,比如一個user有很多朋友,查一個人的朋友如果通過外鍵會浪費很多性能。可以把ids序列化為1,2,3這樣,然后用like查詢速度更快。
          4、一定要優化你的SQL,不要寄希望于ORM給你解決(不管是DataMapper、ActiveRecord或者UnitOfWork)。

          Cache:
          1、一定要考慮Cache,最重要的是領域對象的Cache,一定要考慮Memcache,如Memcached。
          2、應該有90%的查詢可以Cache。
          3、但是要注意Cache實效問題(要及時標注實效),這個是個難點也是個重點。
          4、可以考慮用Message來標記實效(這樣可以保證異步,無阻塞的按照順序的讓數據失效),據稱也不是很難。

          Messaging:
          1、混合應用。不用去看Java的OpenFire了,即使它很好,完全可以考慮erlang的ejabberd了,俄羅斯的產物。
          2、排隊問題有很多解決方案:ActiveMQ、RabbitMQ、MySQL + Lightweight Locking、Drb(for ruby)

          posted on 2007-10-16 08:42 Tin 閱讀(3204) 評論(3)  編輯  收藏 所屬分類: 擴展與調優RoR

          評論

          # re: Twitter的性能調優的關鍵點 2007-10-16 09:10 太陽里的雪
          他們用的是ROR,然道還自己寫SQL,不用ActiveRecord?  回復  更多評論
            

          # re: Twitter的性能調優的關鍵點 2007-10-16 13:06 Tin
          用RoR也要進行優化呀。ActiveRecord也可以自己優化SQL的。  回復  更多評論
            

          # re: Twitter的性能調優的關鍵點 2007-12-21 09:33 bizairshop
          一定要早點測試沒錯 !
          http://www.bizairshop.com  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 蓝山县| 兴化市| 临湘市| 阳信县| 镇康县| 文安县| 都安| 克山县| 白河县| 句容市| 肇州县| 酒泉市| 通道| 壤塘县| 高要市| 新津县| 河南省| 南宫市| 洞头县| 玛沁县| 砚山县| 广丰县| 锡林郭勒盟| 桐城市| 宣化县| 班玛县| 海城市| 忻城县| 五指山市| 北票市| 荆州市| 镇安县| 台中市| 友谊县| 临洮县| 措勤县| 波密县| 稻城县| 罗定市| 台前县| 奉节县|