V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Kauruus  ›  全部回复第 1 页 / 共 2 页
回复总数  37
1  2  
7 天前
回复了 Flourite 创建的主题 Python 请教 Python 大神关于 flask 压测 rps 掉到 0
Linux 下 TIME_WAIT 也在涨,在 1.4 万个左右徘徊。我是开了 tcp_tw_reuse = 2 的,然后这个 wrk 也在本机跑,所以会重用,所以连续跑 rps 基本保持不变。
7 天前
回复了 Flourite 创建的主题 Python 请教 Python 大神关于 flask 压测 rps 掉到 0
Linux 也试了一下,没有完全降到 0 ,只有几个 timeout 应该也是 TIME_WAIT 的影响。
7 天前
回复了 Flourite 创建的主题 Python 请教 Python 大神关于 flask 压测 rps 掉到 0
Mac 下能重现,rps 降到 3 ,甚至出现 unable to connect to localhost:5000 Can't assign requested address 。

netstat 看到 1.6 万个 TIME_WAIT 。
13 天前
回复了 LZYMichael 创建的主题 程序员 我们将使用母语编程
我甚至看不懂 OP 的需求
15 天前
回复了 AntonChen 创建的主题 Go 编程语言 Fiber 还是 Hertz
初学先用标准库,然后再用兼容标准库的“框架”,如 chi 。
你在 error 里带上调用栈也不是不行(例如 https://github.com/go-errors/errors ),然后在顶层处理,打印或者发到 sentry 。
18 天前
回复了 htxy1985 创建的主题 程序员 求一款比较成熟的 golang 服务端热更方案
这还是从架构角度去整吧。

有状态服务,无论如何都要处理断线重连、重启的状态迁移问题。

新启一个实例,状态迁移过去,例如发消息给客户端,让它们连到新的实例。
27 天前
回复了 cj323 创建的主题 Ruby on Rails Ruby on Rails 用着太舒服了
不用上云?也没多少 Web 框架要默认上云或强行你上云吧。

不知道为什么 Rails 8 就把 No PaaS 当作亮点宣传了。当然我是喜欢 solid 系列的包的。
挺好玩的,好奇怎样定义新的 pattern 。
32 天前
回复了 aababc 创建的主题 程序员 golang 中 error 如何影响 log 和 api 状态
Nginx 返回 504 Gateway Timeout 是因为 Nginx 自己是 Gateway/Proxy ,返回 504 让 Nginx 的客户端知道 nginx timeout 了,没有从上游获拿到响应。

除非你业务是做代理,做请求转发,不然业务逻辑故障不应该返回 504 。
@rainbowStay 不存在 “go 不推崇依赖注入” 的。
37 天前
回复了 LZYMichael 创建的主题 程序员 眼睛好痛,大家编辑器用的什么主题
尽量统一就行,不要在深色、浅色页面来回切换,瞎眼。

我是一直用亮色主题的,浏览器也强制用浅色。
转行做套壳还是来得及的,感觉连不知道 NLP 和 word2vec 都没问题。

转行做模型,没钱没卡没数据,怕是来不及了。
43 天前
回复了 codigger 创建的主题 程序员 程序员与编程领域,似乎符合 10x 定律
把下限拉低(初学者),把上限拉高( 3 周产出应用的独立开发者),自然能比出 10x 。
49 天前
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@lesismal

> 而一个 golang 进程首先是进程自己有一组(1-N 个)用户态线程, goroutine 是基于用户态线程之上的应用层语言 runtime 自己进行调度的, 最大的区别, goroutine 可不是由内核调度的。

“这组线程”就是内核线程,有对应内核调度实体,Goroutine 才是“用户态线程”。

这是非常普遍的 M:N 调度模型。M 个 Goroutine/Green thread/virtual thread/ 调度到 N 个内核调度实体上。

当然 Go 为了方便迁移 Goroutine ,还有个 P 的概念,不影响 M:N 的关系。

按照你的说法,就变成 M:N:O 三层了。
49 天前
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@james122333 Go 运行时不是会调度 goroutine 吗?

> 它更像是单纯的线程 配合 channel 调度才能对标虚拟线程或线程池

你不用 channel 它也会被运行时调度到物理线程上执行呀,运行时内部也有队列呀。
49 天前
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@james122333

virtual thread 和 goroutine 是一个可以被调度的实体,或者说是用户态线程,有自己的栈。

channel ,BlockingQueue 这些是消息通讯机制。

然后调度器都是队列,把用户态线程调度到物理线程。

所以我没明白你说的 “这虚拟线程对标 go 应该是 goroutine+channel”。
49 天前
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@james122333 感觉 java 的 ThreadPoolExecutor 才是你说的 goroutine + channel ,一个线程池 + 队列执行任务。

Thread.startVirtualThread 和 go 一样是“使劲狂分资源”,然后给调度器(里面自然是有个队列的)调度,virtual thread/goroutine 遇到阻塞的时候把执行权给会调度器( Go 也有抢占调度,不知道 virtual thread 有没有),让它调度下一个 virtual thread/goroutine 。
49 天前
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
所以一个 goroutine 大约用 (2641592 - 3644) / 1000000 = 2.64 KB 内存?应该还有些 timer 的消耗在里面。

然后 Java virtual thread 是 (1117640 - 46304) / 1000000 = 1.07 KB ?是因为默认的栈更小还是其他原因?
60 天前
回复了 pike0002 创建的主题 Go 编程语言 Go 语言中的接口 nil 检查需谨慎
> The static type (or just type) of a variable is the type given in its declaration, the type provided in the new call or composite literal, or the type of an element of a structured variable.

静态类型是变量声明时的类型。

> Variables of interface type also have a distinct dynamic type, which is the (non-interface) type of the value assigned to the variable at run time (unless the value is the predeclared identifier nil, which has no type).

接口类型变量还有一个动态的类型,这个类型是运行期赋于的*值的类型*,除非那个值是**预先声明的标识符 nil**,它没有类型。

这里很明确地区分了 标识符 nil 和一个值的类型。


解释了把 (标识符 nil )和 (一个为 nil 的值)赋值给一个 interface 的区别,前者没有类型,后者值为 nil 但是有类型。


> Two interface values are equal if they have identical dynamic types and equal dynamic values or if both have value nil.

两个接口值只有在动态类型和值都相等时相等。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2950 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 06:38 · PVG 14:38 · LAX 22:38 · JFK 01:38
Developed with CodeLauncher
♥ Do have faith in what you're doing.