移動互聯網數據分析 移動客戶端流量統計 移動客戶端數據統計(二)

原創文章,轉載請註明原地址

http://blog.csdn.net/stevenprime

 

二.數據的收集

移動客戶端收集數據後,一般通過http協議或者其它方式上傳到服務器.

服務器將客戶端傳過來的數據進行持久化.

剛開始的時候,我的做法比較山寨,起了一個web應用,寫了一個servlet,從http請求中將數據提取出來,

直接插入數據庫.這樣的問題很明顯,如果併發稍高,數據庫首先撐不住,因此用了數據庫連接池,

這樣的問題還是很明顯,併發再高,數據庫都會面臨非常大的壓力.

再後來,經過經理的提醒,打算先將數據存爲日誌,因此在servlet中使用了log4j,將數據按照一定的格式存爲日誌.

但是受限於java web應用的處理模型,在壓力測試的時候,發現servlet在高併發下,響應時間會很長,而且超時率非常高.

在我們公司的破機器下,2G內存,4核cpu,在1000併發的情況下,響應時間大概100ms以上,3000併發的情況下,響應時間達到了500ms,

而且超時率已經達到了5%,cpu佔用率相當高.

當時領導帶我去找了一位公司牛人,他是負責nginx模塊開發的,當時我對nginx是什麼都不太清楚.

他寫了一個nginx接收post請求的模塊,我從他哪裏將模塊代碼拿來,經過自己的修改,增加了配置日誌滾動時間,配置自定義文件名等功能,

後來再進行壓力測試,在5000併發下,相應時間非常少,而且超時率爲0%,cpu佔用也不高,由於滿足了需求,而且沒有再多的測試服務器,所以不在往上測試了.

當時nginx的穩定版好像是0.7.x,開發版是0.8.x,當時的nginx不支持靜態post請求,因此自己開發nginx模塊,當時還發現了nginx存在的bug :)

開發nginx模塊是稍有難度的,像我這樣平時是以java語言爲主的,好久沒碰c語言了,改寫nginx模塊,還比較費勁.

不過現在的nginx模塊好像增加靜態post功能了,而且可以用nginx的lua模塊來獲取http請求中的內容了.

比以前容易多了.

 

 

 

原創文章,轉載請註明原地址

http://blog.csdn.net/stevenprime

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章