[基於Epoll內建Leader-Follower服務端實現, 已可達50萬echo qps(全新支援Lua啦)] – C/C++ – ChinaUnix.net -

來源:互聯網
上載者:User

[基於Epoll內建Leader-Follower服務端實現, 已可達50萬echo qps(全新支援Lua啦)] - C/C++ - ChinaUnix.net -

[其他] [基於Epoll內建Leader-Follower服務端實現, 已可達50萬echo qps(全新支援Lua啦)] [複製連結] 0  0

linux_c_py_php

linux_c_py_php 當前離線

空間積分
0
信譽積分
498
UID
27208017
閱讀許可權
90
積分
21852
文章
2196
精華
1
可用積分
21854
專家積分
0
線上時間
978 小時
註冊時間
2012-07-28
最後登入
2013-03-26
 

巨富豪門

巨富豪門, 積分 21852, 距離下一級還需 18148 積分
文章
2196
主題
21
精華
1
可用積分
21854
專家積分
0
線上時間
978 小時
註冊時間
2012-07-28
最後登入
2013-03-26
  • 串門
  • 好友
  • 部落格
  • 訊息
論壇徽章:
0

電梯直達

1樓 [收藏(0)] [報告] 發表於 2013-02-18 00:02:23 |只看該作者 |倒序瀏覽

本帖最後由 linux_c_py_php 於 2013-02-21 17:38 編輯

   程式在論壇眾親友的給力指導下, 在公司核心部門的指導之下, 長串連效能最終達到了50萬qps, 短串連效能最終達到了7萬qps, 測試機器CPU為12核心, 64MB記憶體, 測試環境為單機lo網口.

   程式基於epoll的EPOLLONESHOT選項, 充分利用了epoll的安全執行緒特性, 通過獨立的監聽線程最大化串連建立速率, 通過線程池配合epoll簡易的實現了Leader-Follower的程式結構, 對於各類商務邏輯能夠普遍適用.

   程式最佳化過程中, 主要是2個瓶頸點的化解:

   1, epoll安全執行緒, 所以內部的鎖會造成多線程共用epoll fd的瓶頸, 通過建立多組epoll fd, 減小鎖的競爭可以化解瓶頸, 充分利用硬體效能.
   2, 短串連建立能力差, 未經過最佳化網路參數, 只能達到3萬/秒的建立能力, 經過參數最佳化, 可以達到8萬/秒的建立能力, 具體參數參考代碼裡的Readme.

代碼如下,最初的255行小代碼, 有明顯的瓶頸:(15萬QPS)
server.tar.gz (1.85 KB, 下載次數: 89) 2013-02-18 00:02 上傳

下載次數: 89
一個server.c

解決上述兩個問題後的代碼, 能夠支撐50萬qps:
lfepoll.tar.gz (2.69 KB, 下載次數: 106) 2013-02-19 17:48 上傳

下載次數: 106
真的很高效了.

這是引入了lua的代碼, 不支援yield, 因為考慮到需要把代碼改成狀態機器的太費勁, 並且程式本身就是leader-folllower的, 所以提供一些非同步connect等實用介面的必要性不大:
lfepoll.tar.gz (4.27 KB, 下載次數: 33) 2013-02-21 15:09 上傳

下載次數: 33
支援lua(剛才傳錯了!)

測試lua版本效能, 發現luaL_loadstring頻繁調用效能損耗嚴重, 所以做成了只載入一次, 然後保持一份引用在註冊表裡, 以便重複使用, 現在程式瓶頸已經轉移到了lua_pcall, 目測已經無法最佳化了.(注意測試前修改logic.lua, 改為純echo服務, 否則會導致test壓力工具工作不正常)

lfepoll.tar.gz (4.38 KB, 下載次數: 36) 2013-02-21 16:55 上傳

下載次數: 36
最佳化luaL_loadstring

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.