原创 pip打包例子

使用pip把相關類庫打包之後,就可以方便的使用pip工具進行一鍵安裝。甚至可以把自己的包加入到官方pip服務器上,這樣自己的服務器上面無需配置就可以直接命令安裝。 目錄結構如下 |-mypackage | |-file1 |-setup.

原创 單機千萬併發連接實戰(修訂版)

c10k,c100k,c1000k等問題大家都已經司空見慣,那麼10m(千萬)併發連接呢?今天就來一起挑戰一下。下面我們使用handy庫自帶的例子程序,來跑出一個單機千萬併發連接的實例,先上操作步驟,後面解

原创 leveldb性能調優

許多的nosql都使用leveldb或者類似leveldb的系統作爲存儲引擎,例如tair,hbase,canssandra,因此理解並調優存儲引擎可以大大的提高系統的性能。 前一篇大致介紹了原理,這一篇

原创 單機千萬併發連接實戰

  c10k,c100k,c1000k等問題大家都已經司空見慣,那麼10m(千萬)併發連接呢?今天就來一起挑戰一下吧。 準備機器   10m連接,大家的個人電腦肯定無法滿足要求,如果不是在大公司任職,弄個實際的物理機對大家是個奢望。那麼怎

原创 阿里雲 RDS SDK python3支持

最近的一個項目需要操作阿里雲的RDS,項目使用python3,讓人驚訝的是官方的SDK竟然只支持python2 在阿里雲現有SDK上改了改,文件的修改只涉及aliyun/api/base.py,詳見htt

原创 leveldb爲什麼這麼快

nosql數據庫大多采用leveldb或者類似leveldb的存儲引擎,我們來看看它爲什麼能夠這麼快。 levelDB則採用了一種全新的數據結構,叫做log structured merge tree(LSMT),寫入數據時,一方面會把數

原创 epoll LT/ET 深入剖析

epoll LT/ET 深入剖析 EPOLL事件有兩種模型: Level Triggered (LT) 水平觸發 .socket接收緩衝區不爲空 有數據可讀 讀事件一直觸發 .socket發送緩衝區不滿

原创 C++ 高性能無鎖日誌系統

服務器編程中,日誌系統需要滿足幾個條件 .高效,日誌系統不應占用太多資源 .簡潔,爲了一個簡單的日誌功能引入大量第三方代碼未必值得 .線程安全,服務器中各個線程都能同時寫出日誌 .輪替,服務器不出故障是不重啓的,半年一年的日誌放到一個文

原创 10行代碼編寫一個c++服務器

Handy是一個簡潔優雅的C++11網絡庫,適用於linux與Mac平臺。十行代碼即可完成一個完整的網絡服務器。 下面是echo服務器的代碼: #include <handy/handy.h> using

原创 阿里雲 oss python3 例子

阿里雲的oss SDK又是不支持python3,頭疼頭疼。本想改一改它的SDK,讓它支持python2+python3,無奈裏面大量的代碼使用不帶括號的print,工作量恐怖。 幸好oss的使用非常簡單,我翻了翻相關文檔,弄了個簡單可運行

原创 千萬併發連接注意點

對於一臺服務器來說,支撐千萬併發連接是一個挑戰,我們來看看有哪些限制,並且如何解決 首先是內存問題,默認設置下,系統爲每個tcp連接分配4k的rmem和4k的wmem,那麼一個連接需要8k的內存,1kw連接需要80G內存。 修改系統的這

原创 mako模板調試與使用技巧

django默認的模板太不靈活,想把一個數字0.15顯示成15%都得費不少勁,太不爽!!! 網上查閱了幾個模板系統,有Jinja2等等,最後發現mako能夠直接支持python的語句,最爲靈活,果斷選用。 使用過程中碰見的問題不少,

原创 epoll示例

epoll示例 linux下的非阻塞網絡編程必定離不開epoll。epoll的使用一共有三個函數: int epoll_create(int size); 函數產生一個epoll句柄,其中size參數在linux內核2.6.8會被忽略,但

原创 半同步半異步高性能網絡編程

網絡編程的模式分爲3種: 1. nginx的全異步方式,使用epoll處理網絡數據,對於請求的處理也完全是異步的。任何一個請求的處理如果花費了較長時間,那麼nginx進程就會被處理操作阻塞,導致無法處理IO事件 2. 簡單的一個連接一個線

原创 kqueue示例

網絡服務器通常都使用epoll進行異步IO處理,而開發者通常使用mac,爲了方便開發,我把自己的handy庫移植到了mac平臺上。移植過程中,網上居然沒有搜到kqueue的使用例子,讓我驚訝不已。爲了讓大家不用像我一樣再次花費大力氣搞定k