Time of Update: 2018-08-02
當一個Web系統從日訪問量10萬逐步增長到1000萬,甚至超過1億的過程中,Web系統承受的壓力會越來越大,在這個過程中,我們會遇到很多的問題。為瞭解決這些效能壓力帶來問題,我們需要在Web系統架構層面搭建多個層次的緩衝機制。在不同的壓力階段,我們會遇到不同的問題,通過搭建不同的服務和架構來解決。 Web負載平衡 Web負載平衡(Load Balancing),簡單地說就是給我們的伺服器叢集分配“工作任務”,而採用恰當的分配方式,對於保護處於後端的Web伺服器來說,非常重要。
Time of Update: 2018-08-02
ffmpeg非常強大,輕鬆幾條命令就可以完成你的工作。 把darkdoor.[001-100].jpg序列幀和001.mp3音頻檔案利用mpeg4編碼方式合成視頻檔案darkdoor.avi: $ ffmpeg -i 001.mp3 -i darkdoor.%3d.jpg -s 1024x768 -author skypp -vcodec mpeg4 darkdoor.avi ffmpeg還支援mov格式: $ ffmpeg -i darkdoor.%3d.jpg darkdoor.mov
Time of Update: 2018-08-02
使用mp4v2將H264+AAC合成mp4檔案 錄製程式要添加新功能:錄製CMMB電視節目,我們的板卡發送出來的是RTP流(H264視頻和AAC音頻),錄製程式要做的工作是: (1)接收並解析RTP包,分離出H264和AAC資料流; (2)將H264視頻和AAC音頻以某種格式封裝,最後存成檔案,供使用者查看。 第一步已經有部分代碼可供參考,因此很快就完成了。
Time of Update: 2018-08-02
請注意這是 libev 而不是 libevent 的文章。 這篇文章是第三篇,主要講 libev 裡基本集中的 watcher。 本文地址:https://segmentfault.com/a/1190000006679929 ev_io:直接操作fd 這個 watcher 負責檢測檔案描述符(以下簡稱fd)是否可寫入資料或者是讀出資料。最好是將fd設定為非阻塞的。
Time of Update: 2018-08-02
2016年8月18日12:42:35 參照官方文檔https://github.com/arut/nginx-rtmp-module/wiki/Directives 請注意這個是粗翻譯版,僅供參考,不是精校版 精校版後面才會更新 目錄 核心 rtmp server listen application timeout ping ping_timeout
Time of Update: 2018-08-02
java.util.ConcurrentModificationException異常 1、 今天在寫一個帶緩衝功能的訪問代理程式時出現了java.util.ConcurrentModificationException異常,因為該異常是非捕獲型異常而且很少見,所以費了些時間才找到問題所在,原來在通過Iterator進行遍曆的時候,如果直接對HashMap進行操作後,再繼續用之前的Iterator進行遍曆就會出現這個異常,表示其HashMap已經被修改。
Time of Update: 2018-08-02
最近自己動手將H264視頻流和AAC音頻流合成flv檔案,但是沒有採用開源的ffmpeg的api來處理音視頻流。方法就是模仿ffmpeg中libavformat/flvenc.c 檔案寫代碼來完成音視頻的flv格式封裝。在這個封裝過程中,需要非常清楚flv檔案格式。網上有關flv檔案格式的資料非常多,不過大部分資料是互相轉載或者缺乏足夠詳細的資訊(例如:AVDecoderConfigurationRecord和 AudioSpecificConfig的產生)。
Time of Update: 2018-08-02
伺服器效能IO最佳化 中發現一個估算公式:最佳線程數目 = ((線程等待時間+線程CPU時間)/線程CPU時間 )* CPU數目 比如平均每個線程CPU已耗用時間為0.5s,而線程等待時間(非CPU已耗用時間,比如IO)為1.5s,CPU核心數為8,那麼根據上面這個公式估算得到:((0.5+1.5)/0.5)*8=32。這個公式進一步轉化為:最佳線程數目 = (線程等待時間與線程CPU時間之比 + 1)* CPU數目 可以得出一個結論:
Time of Update: 2018-08-02
1. 最新版下載地址 https://code.google.com/p/leveldb/downloads/list 2. 放到linux系統中解壓並編譯,其實編譯leveldb很簡單,解壓下載包之後進入目錄直接執行make即可。編譯完成之後會在目前的目錄產生幾個檔案: libleveldb.a libleveldb.so libleveldb.so.1 libleveldb.
Time of Update: 2018-08-02
在debug後必須接程式的完整名稱 比如pro1.exe 然後 輸入r 就可以查看當前 寄存器的情況,輸入t就逐步執行,需要注意的是 源碼必須要有start標記 否則 t執行也不會 正確。 輸入 d DS地址:位移地址 就可以記憶體的資料了,需要注意的是 dw定義的是字型資料,一個字型資料佔兩個位元組,分高位和低位 比如 ,0123H,就分01 高位,和 23低位。 在 -d命令 查詢到的 資料就是 23 01 這樣子的 。 附上上一篇文章的源碼:(以及注釋) 6
Time of Update: 2018-08-02
SSDB 是一個 C/C++ 語言開發的高效能 NoSQL 資料庫, 支支援 Key-value, Key-hashmap, Key-zset(sorted set) 等資料結構, 十分適合儲存數億條層級的列表, 排序表等集合資料, 是 Redis 的替代和增強方案。 SSDB 具有和 Redis 相似的 API, 支支援的用戶端包括:php, C++, python, Java, Lua, Ruby,Nodejs, etc。 SSDB 是穩定的, 生產環境使用的,
Time of Update: 2018-08-02
http://my.oschina.net/lxcong/blog/143904 前言 LVS大家應該很熟悉,這款優秀的開源軟體基本成為了IP負載平衡的代言詞。但在實際的生產環境中會發現,LVS調度在大壓力下很容易就產生瓶頸,其中瓶頸包括ipvs核心模組的限制,CPU非強制中斷,網卡效能等,當然這些都是可以調優的,關於LVS的調優,會在這裡詳細講 LVS調優攻略 。回到主題,那當無法避免的單台LVS調度機出現了效能瓶頸,有什麼辦法呢。
Time of Update: 2018-08-02
在大容量,高負荷的web系統中,對資料庫進行一系列拆分,可有效提升資料庫容量與效能。在初學程式的早期,程式員通常都喜歡按傳統資料庫設計模式,設計為單庫和單一功能表的結構,這樣的結構在資料量和並發量達到一定程度之後,會出現嚴重性能問題和維護問題。在出現問題的時候才著手進行最佳化,會非常痛苦,所以應該在系統架設之初就考慮好之後會出現的問題。
Time of Update: 2018-08-02
1、問題來源,多線程使用Libcurl導致程式跑一段時間後自己退出,沒有明顯的異常。找不到合適的BUG。 最後通過查看資料和網上找的一些文章,發現,原來是訊號處理的問題: CURLOPT_NOSIGNAL Pass a long. If it is 1, libcurl will not use any functions that install signal handlers or any
Time of Update: 2018-08-02
對於伺服器的並發處理能力,我們需要的是:每一毫秒伺服器都能及時處理這一毫秒內收到的數百個不同TCP串連上的報文,與此同時,可能伺服器上還有數以十萬計的最近幾秒沒有收發任何報文的相對不活躍串連。同時處理多個並行發生事件的串連,簡稱為並發;同時處理萬計、十萬計的串連,則是高並發。伺服器的並發編程所追求的就是處理的並發串連數目無限大,同時維持著高效率使用CPU等資源,直至實體資源首先耗盡。
Time of Update: 2018-08-02
TCP串連的關閉有兩個方法close和shutdown,這篇文章將盡量精簡的說明它們分別做了些什麼。 為方便閱讀,我們可以帶著以下5個問題來閱讀本文: 1、當socket被多進程或者多線程共用時,關閉串連時有何區別。 2、關串連時,若串連上有來自對端的還未處理的訊息,會怎麼處理。 3、關串連時,若串連上有本進程待發送卻未來得及發送出的訊息,又會怎麼處理。 4、so_linger這個功能的用處在哪。
Time of Update: 2018-08-02
當伺服器的並發TCP串連數以十萬計時,我們就會對一個TCP串連在作業系統核心上消耗的記憶體多少感興趣。socket編程方法提供了SO_SNDBUF、SO_RCVBUF這樣的介面來設定串連的讀寫緩衝,linux上還提供了以下系統級的配置來整體設定伺服器上的TCP記憶體使用量,但這些配置看名字卻有些互相衝突、概念模糊的感覺,如下(sysctl -a命令可以查看這些配置): [cpp] view plain
Time of Update: 2018-08-02
最近公司在開發一個電子商務網站,用的是MyEclipse_6.5_GA,安裝了一個freemarker外掛程式,只需要將hudson.freemarker_ide_0.9.14 這個檔案夾複製到Eclipse目錄下的plugins目錄下,重啟MyEclpse 6.5 即可,但是公司的機子上安裝的是MyEclipse_6.5_GA,而我家裡的機子是MyEclipse_8.5_GA的,發現將hudson.freemarker_
Time of Update: 2018-08-02
官方下載地址:http://www.zend.com/en/community/downloads( 需要你註冊會員才能下載,註冊是免費的) Zend Framework (ZF) 是一個開放原始碼的 PHP5 開發架構,可用 於來開發 web 程式和服務。ZF 100%用物件導向代碼實現。 ZF中的 組件非常獨立,每個組件幾乎不依賴於其他組件。這樣的松耦合結 構可以讓開發人員獨立使用組件。 我們常稱此為 “use-at-will”設 計。
Time of Update: 2018-08-02
這篇文章將試圖說明應用程式如何接收網路上發送過來的TCP訊息流程,由於篇幅所限,暫時忽略ACK報文的回複和接收視窗的滑動。 為了快速掌握本文所要表達的思想,我們可以帶著以下問題閱讀: 1、應用程式調用read、recv等方法時,socket通訊端可以設定為阻塞或者非阻塞,這兩種方式是如何工作的。