Open Billyzou0741326 opened 4 years ago
id | roomid | type | name | created_at (时差) |
---|---|---|---|---|
1808040 | 14201872 | guard | 舰长 | 2019-12-28 09:51:38 |
1808041 | 2603963 | guard | 舰长 | 2019-12-28 09:52:56 |
1808042 | 21154366 | guard | 舰长 | 2019-12-28 09:53:08 |
1808043 | 21539718 | guard | 舰长 | 2019-12-28 09:53:16 |
1808044 | 21448055 | storm | 节奏风暴 | 2019-12-28 09:53:22 |
1808045 | 10556121 | guard | 舰长 | 2019-12-28 09:53:31 |
1808046 | 128135 | storm | 节奏风暴 | 2019-12-28 09:54:19 |
1808047 | 10556121 | guard | 舰长 | 2019-12-28 09:56:16 |
1808048 | 1448688 | guard | 舰长 | 2019-12-28 09:56:26 |
1808049 | 2259890 | guard | 舰长 | 2019-12-28 09:56:36 |
1808050 | 10556121 | guard | 舰长 | 2019-12-28 09:57:36 |
1808051 | 21570283 | storm | 节奏风暴 | 2019-12-28 09:57:42 |
1808052 | 302816 | guard | 舰长 | 2019-12-28 09:57:46 |
1808053 | 21539718 | guard | 舰长 | 2019-12-28 09:58:01 |
1808054 | 7654470 | guard | 舰长 | 2019-12-28 09:58:01 |
1808055 | 10642428 | guard | 舰长 | 2019-12-28 09:58:13 |
1808056 | 21539718 | guard | 舰长 | 2019-12-28 09:58:31 |
1808057 | 4348162 | guard | 舰长 | 2019-12-28 09:59:48 |
1808058 | 2259890 | guard | 舰长 | 2019-12-28 10:00:21 |
1808060 | 2613601 | guard | 提督 | 2019-12-28 10:01:01 |
1808061 | 824494 | storm | 节奏风暴 | 2019-12-28 10:01:30 |
1808062 | 4641942 | storm | 节奏风暴 | 2019-12-28 10:01:57 |
1808063 | 45972 | guard | 舰长 | 2019-12-28 10:03:01 |
1808064 | 21580043 | guard | 舰长 | 2019-12-28 10:03:11 |
1808065 | 21539718 | guard | 舰长 | 2019-12-28 10:03:56 |
1808066 | 12594500 | guard | 提督 | 2019-12-28 10:04:46 |
1808067 | 43668 | guard | 舰长 | 2019-12-28 10:05:16 |
1808068 | 757349 | storm | 节奏风暴 | 2019-12-28 10:05:29 |
1808069 | 3268068 | storm | 节奏风暴 | 2019-12-28 10:05:48 |
1808070 | 21448055 | storm | 节奏风暴 | 2019-12-28 10:06:04 |
1808071 | 21539718 | guard | 舰长 | 2019-12-28 10:06:21 |
1808072 | 21517049 | guard | 舰长 | 2019-12-28 10:06:58 |
1808073 | 3702265 | storm | 节奏风暴 | 2019-12-28 10:09:29 |
1808074 | 2603963 | guard | 舰长 | 2019-12-28 10:09:51 |
1808075 | 43668 | guard | 舰长 | 2019-12-28 10:10:21 |
1808076 | 3448829 | storm | 节奏风暴 | 2019-12-28 10:11:34 |
1808077 | 2625423 | guard | 舰长 | 2019-12-28 10:13:03 |
1808078 | 21517654 | guard | 舰长 | 2019-12-28 10:13:08 |
1808079 | 281727 | guard | 舰长 | 2019-12-28 10:15:11 |
1808080 | 11619634 | storm | 节奏风暴 | 2019-12-28 10:15:24 |
1808081 | 1011 | guard | 舰长 | 2019-12-28 10:15:43 |
1808082 | 21386005 | guard | 舰长 | 2019-12-28 10:17:31 |
1808084 | 21611039 | guard | 舰长 | 2019-12-28 10:18:46 |
1808085 | 12594500 | guard | 提督 | 2019-12-28 10:20:21 |
1808086 | 47557 | guard | 舰长 | 2019-12-28 10:22:18 |
1808087 | 21685737 | guard | 舰长 | 2019-12-28 10:22:43 |
1808088 | 21386005 | guard | 舰长 | 2019-12-28 10:23:51 |
1808089 | 21331425 | guard | 舰长 | 2019-12-28 10:24:11 |
1808090 | 21331425 | guard | 舰长 | 2019-12-28 10:24:41 |
1808091 | 3647211 | guard | 舰长 | 2019-12-28 10:26:11 |
1808092 | 3647211 | guard | 舰长 | 2019-12-28 10:26:21 |
1808093 | 21539718 | guard | 舰长 | 2019-12-28 10:26:41 |
1808094 | 21580043 | guard | 舰长 | 2019-12-28 10:27:46 |
1808095 | 21511979 | storm | 节奏风暴 | 2019-12-28 10:29:24 |
1808096 | 21525988 | guard | 舰长 | 2019-12-28 10:30:31 |
1808097 | 8128451 | storm | 节奏风暴 | 2019-12-28 10:31:34 |
1808098 | 392661 | guard | 舰长 | 2019-12-28 10:33:18 |
1808100 | 10556121 | guard | 舰长 | 2019-12-28 10:35:11 |
1808101 | 65482 | guard | 舰长 | 2019-12-28 10:36:13 |
1808102 | 12834857 | guard | 舰长 | 2019-12-28 10:39:56 |
1808103 | 21620337 | guard | 舰长 | 2019-12-28 10:39:56 |
1808104 | 989573 | guard | 舰长 | 2019-12-28 10:40:18 |
1808106 | 11619634 | guard | 舰长 | 2019-12-28 10:41:48 |
1808108 | 27760 | storm | 节奏风暴 | 2019-12-28 10:43:48 |
1808109 | 788361 | guard | 舰长 | 2019-12-28 10:46:58 |
1808110 | 21709053 | guard | 舰长 | 2019-12-28 10:51:18 |
1808111 | 3647211 | guard | 舰长 | 2019-12-28 10:51:41 |
1808112 | 424902 | storm | 节奏风暴 | 2019-12-28 10:51:47 |
1808113 | 306236 | guard | 舰长 | 2019-12-28 10:54:03 |
1808114 | 10556121 | guard | 舰长 | 2019-12-28 10:54:06 |
1808115 | 10556121 | guard | 舰长 | 2019-12-28 10:55:31 |
1808116 | 3297956 | guard | 舰长 | 2019-12-28 10:56:21 |
1808117 | 3580061 | guard | 舰长 | 2019-12-28 10:59:16 |
1808118 | 6065099 | guard | 舰长 | 2019-12-28 11:03:08 |
1808119 | 289079 | storm | 节奏风暴 | 2019-12-28 11:07:40 |
1808120 | 1362072 | guard | 舰长 | 2019-12-28 11:09:29 |
1808121 | 21456469 | storm | 节奏风暴 | 2019-12-28 11:09:57 |
1808122 | 7603080 | guard | 舰长 | 2019-12-28 11:10:16 |
1808123 | 544793 | guard | 舰长 | 2019-12-28 11:10:46 |
1808124 | 3641727 | storm | 节奏风暴 | 2019-12-28 11:13:25 |
1808125 | 14085407 | guard | 舰长 | 2019-12-28 11:14:36 |
1808126 | 21611039 | guard | 舰长 | 2019-12-28 11:14:41 |
1808127 | 3269965 | guard | 舰长 | 2019-12-28 11:15:29 |
1808128 | 81711 | guard | 舰长 | 2019-12-28 11:16:56 |
1808129 | 38781 | guard | 舰长 | 2019-12-28 11:17:26 |
1808130 | 12096201 | guard | 舰长 | 2019-12-28 11:18:44 |
1808131 | 12096201 | guard | 舰长 | 2019-12-28 11:19:14 |
1808132 | 6140913 | guard | 舰长 | 2019-12-28 11:19:21 |
1808133 | 11067408 | guard | 舰长 | 2019-12-28 11:22:01 |
1808134 | 544793 | guard | 舰长 | 2019-12-28 11:23:01 |
1808135 | 2777322 | guard | 舰长 | 2019-12-28 11:24:24 |
1808136 | 21058142 | guard | 舰长 | 2019-12-28 11:25:16 |
1808137 | 5503854 | guard | 舰长 | 2019-12-28 11:27:46 |
1808138 | 991520 | storm | 节奏风暴 | 2019-12-28 11:30:53 |
1808139 | 1267921 | guard | 舰长 | 2019-12-28 11:33:11 |
1808140 | 1135146 | guard | 舰长 | 2019-12-28 11:33:59 |
1808141 | 3113410 | guard | 舰长 | 2019-12-28 11:36:16 |
1808142 | 288400 | guard | 舰长 | 2019-12-28 11:36:26 |
1808143 | 1378879 | guard | 舰长 | 2019-12-28 11:36:31 |
1808144 | 14805603 | guard | 舰长 | 2019-12-28 11:39:09 |
1808145 | 3465508 | guard | 舰长 | 2019-12-28 11:40:51 |
1808146 | 5335284 | guard | 舰长 | 2019-12-28 11:44:14 |
1808147 | 8128451 | guard | 舰长 | 2019-12-28 11:46:34 |
1808148 | 10556121 | guard | 舰长 | 2019-12-28 11:48:31 |
1808149 | 11546841 | storm | 节奏风暴 | 2019-12-28 11:49:13 |
onData
检测掉线的问题是... 掉了就不再触发onData了
这不是问题啊, 接收到消息会触发onData 然后清除计时器,再运行计时器 如果35秒之内又接收到消息 就清除计时器,再重新运行计时器 如果掉线了,35秒没收到消息,计时器函数运行this.close(false); 触不触发onData都没影响。
唯一的问题是35秒这个时间好不好。
推送的时间限制是指?
比如之前说的那个例子,重连房间后,那3个舰长会不会推送?或者说隔多久时间判定这三个舰长是过期的不推送。
不会了 b站只播报一次上舰的消息 没收到的话那就无了
不会了 b站只播报一次上舰的消息 没收到的话那就无了
原来是这样子,掉线那段时间的就没了
试了下改到onData里,可以用,第一次多了hhh
tql
onData
没接收到消息都会触发 如果在这里面clear和set延时的话感觉性能上会有影响
run
里的setInterval
间隔调小一点就好了感觉
确实,高峰期2W连接数,如果礼物再多点可能会爆内存
就两万了吗....
今晚1W3房间开播的时候,我看是1W9 ESTABLISHED连接数。 刚在chrome里试了下
var timer; function run(){ clearTimeout(timer); timer = setTimeout(function(){console.log('重连');},1000); } var t = new Date().getTime(); for (let i=0;i<1000000;i++){ run(); } console.log(new Date().getTime() - t);
我这笔记本100W次用了188M内存 ,11398毫秒
改到500万次,爆了5G内存。。setTimeout果然不能大量使用,又学到了。还是老实把setInterval的值调小点好使。
大佬太强了hhhh
不知道我32g内存 200m家宽够不够用
二狗大佬放心啦 性能方面我会留意的 我们学校内存比你们的小多了
不知道我32g内存 200m家宽够不够用
刚才在chrome试完后,内存没回收,那个新标签页一直5G。。
chrome: 我们的c++不release memory
按理说b站只播报一次上舰的消息,程序刚启动的时候像这种比较早的舰长,是怎么获取到的呢?按理说连接到房间的时候已经播报过了。
另外我干脆把新连接也按掉线率返回IP,好像更好使点,先跑两晚上试试。
另外我干脆把新连接也按掉线率返回IP,好像更好使点,先跑两晚上试试。
这办法在网络很差的机器上表现不错,但是在网络好的机器上容易造成只连一个IP,虽然不影响结果,但是总觉得不太好。还得再想想怎么弄才好,总感觉我在做奇怪的无用功。
另外我干脆把新连接也按掉线率返回IP,好像更好使点,先跑两晚上试试。
这办法在网络很差的机器上表现不错,但是在网络好的机器上容易造成只连一个IP,虽然不影响结果,但是总觉得不太好。还得再想想怎么弄才好,总感觉我在做奇怪的无用功。
解决了,这回应该救得不能再救了,总感觉自己智商不够用,盯着个数组看了半天才想明白。
大佬太肝了吧 不早点睡吗
按理说b站只播报一次上舰的消息,程序刚启动的时候像这种比较早的舰长,是怎么获取到的呢?按理说连接到房间的时候已经播报过了。
另外我干脆把新连接也按掉线率返回IP,好像更好使点,先跑两晚上试试。
比较早的舰长不是动态/静态房间检测到的 是6个分区用以检测高能的房间 通过API查询房间时测到的 动态/静态房间跳过API查询,避免莫名其妙的风控导致整个监控完全崩毁
没错... 有次测试触发了风控 翻车现场十分惨烈
其实,就是盯着数组看了一个小时才想清楚怎么让网络好的IP平均分配连接,找了台网络好的试了下,掉线率都很低的是平均分配IP了,网络差的也比较正常,不过那个统计掉线策略还是不太好。风控不知道是不是因为短时间内对同一个IP大量连接请求。对了,顺便说下客户端好像断开后不会重连,比如路由器重拨,心跳似乎在运行,但是不抽奖了。
不重连的情况我需要多点信息 逻辑是重试3次后 变成每30秒重试一次 我测试过服务器重启3连 无一例外的所有client都重连上了
是完全收不到播报吗?
路由器重拨试了几次,完全收不到,日志就停留在断网那个时候了,不过直播挂机经验一直在涨。 onClose不知道为什么好像没触发
懒得再去那边开issue了,刚单独测试了下。 nodejs这个ws模块有点无语,服务器端如果关闭会触发close事件,但是客户端这边如果断网是不会触发close事件的,还没浏览器的ws事件方便。 https://github.com/websockets/ws#how-to-detect-and-close-broken-connections 得靠那个定期接触发的ping事件检测有没有断网。
是我疏忽了 测试的时候全程跑服务器的 没考虑过客户端断网的情况 服务器的ping设置的20秒间隔 我往客户端加个lastPing检测吧
先鸽几天 有课了
先鸽几天 有课了
hhh结果又肝上了 又发现个新的现象,不同CPU连接数竟然不一样,内核越多连接数越高,同样是1核的也是性能好的连接数多。三个同时跑,一个2W连接数,一个1W5,一个1W,覆盖率也是从高到低,CPU都没跑满。
太强了吧 这么多服务器测 不贵吗....
都是各种便宜的辣鸡VPS,专门用来瞎折腾的
我以前用的aws和现在跑的学校服务器都挺稳
而且线路都是海外这边的
原本以为要解决网络问题很简单,切换网络好的IP就行了,结果一写起来全是坑 每次睡前懒得折腾,刚想睡觉想法就来,还好折腾网络真开心。。 感觉这次应该折腾得差不多了,各种网络情况都考虑到了,网络差的好的,高峰期和平时,新连接数多连接数少,根据实时网络质量IP负载均衡切换。就是代码写得无比难看。
早点睡 我也没多少时间写代码了反正 难看无所谓啊hhh逻辑清晰了代码可以后期重整的 前几天我才重写了一遍request/response那层,用的Fluent API比之前优雅不少倍。同理IP分配也可以整理的肯定
把房间添加到永久监听的时候,似乎有几率会漏,比如连上两个舰,检测到第一个舰长后从动态转到静态,然后第二个就漏了。
快忙死了hhh 不过问题了解了 暂时想不到转静态那几秒的差时怎么处理
好吧想到了
一写就是几个小时... 结果作业都没动一下 wsl
折腾这个比写作业有趣一万倍hhhhh 最右边的是老版本,网络问题应该是不能继续优化了,几个参数也调得差不多了,再跑几天没啥问题就可以结束折腾了 剩下的就是养静态房间列表提高覆盖率了
静态目前的策略是慢慢收集 我这边有接近5000静态了 如果有更激进的获取方式更好hhh 动态分双核发现个问题 估计分配房间逻辑不稳 有概率两边重复监听同一个房间
动态的问题可以放一放 先攻静态吧
改到500万次,爆了5G内存。。setTimeout果然不能大量使用,又学到了。还是老实把setInterval的值调小点好使。
对了,还有个误区纠正一下,nodejs的setTimeout运行完成几秒后就会完全释放内存,辣鸡chrome吃了内存就不吐出来
果然 NodeJS的v8引擎gc还是很不错的hhh
静态目前的策略是慢慢收集 我这边有接近5000静态了 如果有更激进的获取方式更好hhh 动态分双核发现个问题 估计分配房间逻辑不稳 有概率两边重复监听同一个房间
动态的问题可以放一放 先攻静态吧
要不开播的房间舰长数大于50的都直接添加到静态里?还有就是如果长期不播的可以从列表里删掉。
舰长数要访问两个API才能弄到 上次我被风控就因为获取舰长数导致的23333
看了下日志,最新版第一天晚上9点左右还是412了一次,之后几天没412 渣网络的问题跑了很多天比较稳定,不用再继续改了,可以看看怎么把这写得比较丑陋的代码整合进去了
这个我想了下 可以在建立连接后用net.Socket.remoteAddress
获取IP存为this.ip_addr
,掉线时this.emit('ip_disconnect', this.ip_adrr)
,controllerlistener.on('ip_disconnect', ...)
记录掉线率
TypeScript的重写差不多完成一半了 重构了些部分 顺便写进ip也是可以的
静态房间你可以用我的那一套就行,我间隔几个月就会跑一次。数据在 1.5w 左右
我这个不要紧... 静态有万了 不过一直没放上来2333