原创 mongodb 壓力測試問題

  昨晚在做壓力測試的時候, 同步查詢經過了4億次的調用沒有發現問題.. 平均每秒5000次查詢請求.   但是在異步查詢時, 發現了一個奇怪的現象, 數據庫鏈接buf很快就處於阻塞狀態... 導致請求都堆積在緩衝裏... 很快數據庫就會

原创 mongodb C driver的異步查詢

  最近在選用NOSQL數據庫的時候最終選擇了mongodb, 感覺其各方面都很優秀, 於是爲服務器增加了一組mongodb的接口, 以方便LUA邏輯層使用.     驅動方面選用了官方指定的C DRIVER, 大家有興趣的可以直接去mo

原创 網絡負載平衡改造(續)

  昨晚, 構思了一下, 稍微寫了一些, 總結一下經驗和遇到的問題.     首先, 爲了既能平衡調度各個連接, 又能保持對epoll_wait的接受, 需要額外增加一個調度線程, 而原有調用epoll_wait的線程只用於投遞請求, 請

原创 改造網絡負載平衡

  原因:      經過前幾天的壓力測試, 發現網絡層處理消息有些問題, 定長的BUFF導致響應客戶端請求的數量要遠高於數據庫返回的響應(因爲客戶端發送的協議數據長度很小, 而數據庫返回的卻很大, 在同樣長度的BUFF內可以容納更多的客

原创 網絡負載平衡改造(續2)

  昨天有點事耽誤了... 今天又接着改造... , 在改造的時候遇到了一個之前就曾經發生的問題: 因爲epoll_wait和event處理使用2個不同的線程, 這就導致了, 有可能出現, 當event處理線程釋放該connection,

原创 夏令營...

             這段時間最值得回憶的當屬這次夏令營了...其實當初去就是爲了排除一些疑惑,本沒打算學到什麼東西,頭幾天給我的感覺確實讓我很鬱悶,不說他們的回答讓我沒有任何意外,就連形式也感覺安排的很倉促.天那叫一個熱啊,好在寢室

原创 lua經驗 math.huge

  偶然間因爲一個死循環的BUG發現, 原來math.huge通過C接口luaL_checkint獲取的結果爲0 ... 備忘  :)

原创 mongodb 異步查詢(續)

  承接前一篇, 服務器採用C編寫, 邏輯層使用LUA, 搭配開源mongodb c driver開發異步查詢接口.   有了上一次的改造, 這次來說說是如何使用改造後的接口實現異步查詢.   首先, 再來理清一下思路, 現在的一次完

原创 是時候改變一下了

  當摩爾定律不在那麼有效的時候, 我們是依然靜觀其變,還是努力的尋找解決辦法? 多數人當然會說後者, 可實際上絕大部分還是安分守己的選擇前者, 不光是傳統的編程思想易學, 更重要的還是考慮成本的問題, 多數公司不太希望在創新上浪費太多的

原创 多目錄的makefile

  都已經21世紀了,怎麼說程序也不能就一個文件不是,呵呵,鬱悶幾天,現在終於把這個問題解決了.  問題描述:現有2個.cpp文件,1個.h文件 分別放在lib和sources文件夾下,頂層makefile如何解決.o所需依賴的文件之間的

原创 gcc 編譯選項

發現一個好貼... 趕緊收藏~ 有待今後研究學習~  GCC 函式追蹤功能 finstrument-functions __attribute__ +用 Graphviz 可視化函數調用  http://blog.csdn.net/un

原创 mongodb 增加數據庫連接

  只是一篇記錄性的, 沒有任何技術可言...   昨天下午由於建立一條數據庫連接造成數據庫連接斷開... 無奈之舉, 我建立了更多的連接用於異步查詢, 這回數據庫倒是很乖巧了... 不過引擎呈現莫名其妙的波動.... 導致我不得不放慢客

原创 socket IP地址轉換接口

#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h>   int inet_aton(const char *cp, stru

原创 hash_tbl 改造續..

  經過一晚上的倒騰... 終於重構好了hash_tbl, 思路和之前想的一樣~ , 從索引頭到衝突鏈都使用數組實現~ 結構如下:         原來協議層也用的hash_tbl進行管理, 但因爲協議是連續自增ID, 不存在動態變化的

原创 Lua pairs與ipairs效率分析

介於大家目前有些人比較關心 lua table中pairs 和 ipairs的效率問題, 特此研究了一下... 如有不正 還需指出.. 首先來看下 lua中table的結構定義: table中分爲2個存儲空間, 一個是線性數組空間(TVa