基于事件循环,虚心接受大家的批评,渴望大家的 PR ,项目地址: https://github.com/ikilobyte/netman
1
aladdinding 2022-01-25 11:22:54 +08:00
star 为敬
|
2
sunny1688 OP @aladdinding 感谢感谢
|
3
GGGG430 2022-01-25 11:26:23 +08:00
写的不错, 真是新手吗
|
4
beidounanxizi 2022-01-25 11:34:17 +08:00 1
没看到解决什么问题呀
|
5
skiy 2022-01-25 11:49:55 +08:00 via iPhone
之前用 GO 原生写的一个 TCP 服务,iot 那边测电压,总是很大,耗电。用 php rust 就很稳定。不知道是什么原因。
|
6
lesismal 2022-01-25 12:34:13 +08:00
简单看了下,暂时看到几个问题,windows 下的没有 uni*的跳转,所以没仔细看、不一定准确,供楼主参考:
1. fd 是非阻塞的,但读包解包用了 ReadFull 的逻辑,在本次只有半包数据时连接就被断开了,这是不应该作为生产服务来部署的 2. conn 直接写,数据量大写失败应判断 err 类型,缓冲区满、中断之类的应该 AddWrite 等待可写再写 3. server 处理 message 单协程,go 的指令不像 c/cpp 那么快,这种逻辑单协程性能可能会吃紧,如果说 handler 再自己加 pool 、异步之类的,则 server 这块的逻辑协程其实就不需要了 |
7
lesismal 2022-01-25 12:36:30 +08:00
@skiy 应该是你们自己代码问题,不熟悉 go 的人如果不小心来个 for { select default } 之类的,就可能 cpu 100%了,具体问题得按你们自己的代码具体分析
|
8
leonme 2022-01-25 12:47:22 +08:00 via iPhone
解决什么问题呢?
|
9
lux182 2022-01-25 13:17:47 +08:00
重写是最好的学习,知道和创造是两个概念
|
10
sunny1688 OP @lesismal 感谢
windows 如果是用 goland 的话,可以设置一下编译平台,这样就有代码提示了,示例: https://s4.ax1x.com/2022/01/25/7HSX0P.png |
11
skiy 2022-01-25 13:49:17 +08:00 via iPhone
@lesismal 我原本也认为是我代码问题,但是我照着好些别人的框架和 demo 来,一样的问题。我都怀疑是不是还要配置些什么东西和编译时加些什么参数了。
https://gitcode.net/skiy/serv_demo/-/blob/6698453b6f9d493ff6755cdfea32a1a5d2c93368/demo.go |
12
qq1340691923 2022-01-25 13:52:16 +08:00
star 了
|
13
lesismal 2022-01-25 14:09:02 +08:00
|
15
lesismal 2022-01-25 14:29:44 +08:00
@skiy 这个 demo 体现不出来啥,你实测时候的连接数、载荷、qps 、日志量,都影响,go 版本代码跟你的其他语言代码功能差别,这些都只有你自己能够来定位,需要定位的话可以自己开个 pprof 看下哪里消耗多了
|
17
sunny1688 OP @qq1340691923 感谢
|
19
catinsides 2022-01-25 21:53:26 +08:00
golang 新手借问一下,我按照示例中的代码试了下不能跑通。
发现是 go get 的代码中不包含 server.WithHooks 这个函数,但是 github 中代码是 8 小时之前更新的。 说明 pkg.go.dev 到现在都没有更新代码? |
20
sunny1688 OP @catinsides 抱歉,麻烦在拉取一下,是因为我没有发布新的 release
|
21
CrazyCollin 2022-07-30 03:07:09 +08:00
感谢 lz 开源,本新手菜鸟正按照 lz 的 commit 记录重新写,希望学习一下😁
|
22
sunny1688 OP @CrazyCollin 这是什么操作😂
|