原创 線上環境永遠比你想象的複雜

1. 今天做封測,大家都認爲之前的測試做的很好了,但系統還是core了幾次,有的角色load值甚至竄到了幾百。       用戶->php->httplb->apache->memcached->mysqld->storage; 中控節點

原创 關於優化的幾點

今天上課,講後臺應用程序優化,老師講的很好,從cpu、磁盤、網絡三部分入手。晚上看了《深入理解計算機系統》第五章。   之前自己先考慮了一下,會從分析瓶頸、數據結構優化、設計模式應用角度——偏應用了。汗。   1. cpu處理流水線。取指

原创 分表和聯合索引

系統已經在線上運行了一段時間了,雖然有些小bug,但也都能快速的定位並解決。昨天討論了二期的需求,看起來還有很長的路要走。   1. 分表 當某個表的記錄數大於某個值(比如:一百萬)時,mysql查詢的效率會下降。通常這時的辦法是水平分表

原创 後臺開發中的c和c++的比較

後臺開發中的c和c++使用 1. stl使用:從性能上考慮,stl 在邏輯層、應用層用的比較多,在更底層的時候用的就不多了; 2. 內存分配方式:kernel和後臺中更多的使用大塊的內存分配、全局變量,對動態內存的分配使用較少; 3. 錯

原创 抓包工具:tcpdump和wireshark

一、最近遇到的一個問題是這樣,請負責網絡的同事開通了辦公網訪問開發網相應端口。啓動服務之後,業務無法正常訪問,telnet顯示無法連接。 二、按照以下順序進行檢查:         1、在開發機器上使用tcpdump抓包,查看是否有來自辦

原创 expect腳本實現互信

1、expect實現交互式腳本。它是基於tcl語言的。   2、最典型的應用就是配置互信,簡單的20多行腳本完成——如果用c就不會這麼簡單,python應該好一些。   3、expect的思路很簡單,就是“我等”,然後看到“我希望出現的”

原创 看別人的代碼不能想當然

1、毫無疑問對於解決問題我們都有自己的思路,在使用別人現成的程序時,如果某個函數沒有註釋,看到代碼最常見的反應就是猜測它是幹什麼用的; 2、這個猜測的過程就是把自己的思路強加在已有代碼上的過程,八成會出錯;如果需要在源代碼基礎上改動的話,

原创 是否大部分分佈式系統使用的技術思路都差不多?

1、剛看到hadoop的主控的錯誤恢復方法:使用 【定期鏡像+鏡像後日志】 進行恢復。        忽然想到一個問題:      是不是大部分的分佈式系統【使用的技術和大體思路】都差不多?那區別是不是主要在【整個架構的設計以及具體實現細

原创 穿透寫、返回寫

cpu寫cache時,會遇到寫命中(write hit)和未命中兩種情況。   寫命中時將最新數據更新到存儲器上的方法有兩種:穿透寫(write through)和返回寫(write back)。   穿透寫,又叫直寫,立即將cache中

原创 最近遇到的一些mysql的問題

一、sql語句優化: 1、in/not in、exists/not exists使用; 2、join優化;      mysql中使用了nested loop join(驅動表/外表和內表,適合驅動表較小的場景),參考oracle的joi

原创 最近的一些知識點索引

1、不要對含有虛函數的類進行memset操作。會把vptr寫壞。 2、stl中list/set/map遍歷刪除時,兩種正確的方法:使用erase的返回值獲得下一個值;或者在erase之前++。 3、boost庫裏頭有multi-index

原创 svn 回滾

1、從svn log界面中查看所有的版本,右鍵後選擇 “revert to this revision”。 2、確認無問題後,svn commit。 另外,選中任意兩個版本,右鍵可以選擇“compare”進行比較。 在網上搜了半天,最

原创 myisam和innodb

1、有回旁聽師兄答辯,一個現場的老師說了句話記憶至今——“通用的常常是無用的”,所以非通用而可用的東西有很多。所以kevin一直說“一定要理解應用場景”;   2、myisam表有三個文件:記錄表結構的frm文件、數據myd文件、索引my

原创 重構過度設計的代碼

1、項目中要用到不少別人積累的代碼,但是其中有一些明顯的進行了過度設計。用他們的話說:“最初寫代碼的人離開後,我們都不敢隨便改動。因爲太難懂。” 2、之前做重構,都是在現有的代碼基礎上進行抽象、封裝,把別人抽象的、封裝好的架構變得具體還是

原创 經常使用的各種系統命令

1、整體上看,把運行中的機器分成四塊,cpu、內存、磁盤、網絡,每部分都有相應的命令可以監控、查看問題;cpu  top、mpstat、mem  top、free、vmstat磁盤 iostat、df、h