金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評(píng)論 :: 0 Trackbacks
公告
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊(cè)
公告照片
搜索
積分與排名
積分 - 654306
排名 - 25
最新評(píng)論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫
asio 成為C++首選網(wǎng)絡(luò)庫
--linda
2.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個(gè)mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯(cuò)誤(11017)
2.?SVN中邪惡的replace(10939)
3.?VS2005編譯libevent(10405)
4.?混音算法的學(xué)習(xí)與研究(10184)
5.?C調(diào)用lua腳本的效率測(cè)試(9003)
評(píng)論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯(cuò)誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
rpc應(yīng)答太快造成請(qǐng)求超時(shí)
rpc應(yīng)答太快造成請(qǐng)求超時(shí)
(金慶的專欄 2020.9)
在壓測(cè)中發(fā)現(xiàn)總有幾個(gè)請(qǐng)求超時(shí),超時(shí)時(shí)長設(shè)大也會(huì)有,而成功的請(qǐng)求延時(shí)遠(yuǎn)小于超時(shí)時(shí)間。
查錯(cuò)的第一方向是查網(wǎng)絡(luò)庫中有消息丟失。
跟蹤所有消息,發(fā)現(xiàn)超時(shí)的消息應(yīng)該是正常處理并返回了。
于是查接收應(yīng)答消息后的處理,最終找到代碼:
```go
func (c *Client) onRpcRet(cbIndex uint32, ...) {
ii, ok := c.callbacks.Load(cbIndex)
if !ok {
// logger.Errorf("onRpcRet can not find cbIndex %d", cbIndex) // 可能是超時(shí)已刪
return
}
```
打開日志,發(fā)現(xiàn)超時(shí)的請(qǐng)求對(duì)應(yīng)有該條錯(cuò)誤日志。
此處回調(diào)不存在的情況,正常是先超時(shí)刪除回調(diào),然后再收到應(yīng)答。
現(xiàn)在是先收到了應(yīng)答,發(fā)現(xiàn)找不到回調(diào),然后過了一段時(shí)間會(huì)被判為超時(shí)無響應(yīng)。
將下面代碼換個(gè)次序就好了:
```go
if err := c.Session.Send(msg); err != nil {
...
return
}
c.callbacks.Store(cbIndex, ...)
```
改為
```go
// 必須先設(shè)回調(diào),然后發(fā)送,因?yàn)閼?yīng)答可能會(huì)很快
c.callbacks.Store(cbIndex, ...)
if err := c.Session.Send(msg); err...
```
壓測(cè)時(shí)因?yàn)榧訅簷C(jī)CPU是滿負(fù)載運(yùn)轉(zhuǎn),所以 Send() 和 Store() 之間可能會(huì)間隔數(shù)毫秒,
足夠 rpc 請(qǐng)求處理完成并返回,而應(yīng)答返回時(shí)回調(diào)還沒設(shè)置。
先 Send() 后 Store() 寫代碼會(huì)稍微簡(jiǎn)單點(diǎn),因?yàn)?Send() 失敗后可以直接返回。
先 Store() 后 Send() 時(shí),Send() 失敗則需要相應(yīng) Delete().
posted on 2020-09-17 15:59
金慶
閱讀(498)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
2. 網(wǎng)游開發(fā)
、
3. Golang
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
How are dtLinks created in NavMesh
UE4 Blueprint Multiple Event BeginPlay
第9代游戲主機(jī)
Canvas Scaler 的3種模式
幀同步是否允許客戶端指定命令幀號(hào)
rpc應(yīng)答太快造成請(qǐng)求超時(shí)
測(cè)試 tolua 例子 TestErrorStack
lua變量缺少local造成unity死鎖
C# tolua 之間互傳 byte[]
Unity使用異步grpc
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
一本色道久久综合亚洲精品
|
99久久婷婷国产综合精品草原
|
亚洲七七久久精品中文国产
|
久久亚洲电影
|
色综合久久无码中文字幕
|
精品久久久久久无码专区不卡
|
日韩一区二区久久久久久
|
韩国无遮挡三级久久
|
国产精品欧美久久久久无广告
|
思思久久好好热精品国产
|
99久久免费国产特黄
|
久久久久久青草大香综合精品
|
日韩精品久久久久久久电影蜜臀
|
亚洲国产精品久久久久婷婷老年
|
久久91精品国产91
|
激情综合色综合久久综合
|
色偷偷88888欧美精品久久久
|
国产精品热久久毛片
|
国产人久久人人人人爽
|
亚洲精品无码专区久久久
|
久久亚洲国产精品五月天婷
|
久久免费精品视频
|
久久亚洲精品中文字幕
|
国产成人精品久久
|
尹人香蕉久久99天天拍
|
国产巨作麻豆欧美亚洲综合久久
|
久久午夜伦鲁片免费无码
|
伊人久久大香线焦AV综合影院
|
久久露脸国产精品
|
久久久综合香蕉尹人综合网
|
久久国产精品二国产精品
|
国产精品内射久久久久欢欢
|
久久久久免费精品国产
|
久久精品亚洲精品国产色婷
|
无码超乳爆乳中文字幕久久
|
99久久综合国产精品免费
|
亚洲精品综合久久
|
亚洲午夜无码AV毛片久久
|
国产99久久久国产精品小说
|
久久综合视频网站
|
超级碰碰碰碰97久久久久
|