Open smallnest opened 5 years ago
大神 差一个 goroutine per conn和reactor epoll 在100w连接下的 吞吐测评 这个是很多人想知道的 从你前面的文章 我们只是知道 goroutine per conn 比epoll占用内存多,但是我们还并不知道goroutine per conn在百万连接下吞吐和延迟是否和epoll有差别,也许这个能说明百万级goroutine上下文切换的性能是否靠谱,很期待,谢谢
@zhbinary 大神 差一个 goroutine per conn和reactor epoll 在100w连接下的 吞吐测评 这个是很多人想知道的 从你前面的文章 我们只是知道 goroutine per conn 比epoll占用内存多,但是我们还并不知道goroutine per conn在百万连接下吞吐和延迟是否和epoll有差别,也许这个能说明百万级goroutine上下文切换的性能是否靠谱,很期待,谢谢
已加
@smallnest
@zhbinary 大神 差一个 goroutine per conn和reactor epoll 在100w连接下的 吞吐测评 这个是很多人想知道的 从你前面的文章 我们只是知道 goroutine per conn 比epoll占用内存多,但是我们还并不知道goroutine per conn在百万连接下吞吐和延迟是否和epoll有差别,也许这个能说明百万级goroutine上下文切换的性能是否靠谱,很期待,谢谢
已加
没看到啊,加在哪里了,第二篇都是epoll的百万测评
@smallnest
@zhbinary 大神 差一个 goroutine per conn和reactor epoll 在100w连接下的 吞吐测评 这个是很多人想知道的 从你前面的文章 我们只是知道 goroutine per conn 比epoll占用内存多,但是我们还并不知道goroutine per conn在百万连接下吞吐和延迟是否和epoll有差别,也许这个能说明百万级goroutine上下文切换的性能是否靠谱,很期待,谢谢
已加
看到了 在第二篇加了
因为测的就是这两种方式的性能
@jonyhy96 大佬 对比测试为什么这里要用for不断去写而多poller方式只写一次,这个对测试结果没有影响吗?
@jonyhy96
@smallnest 因为测的就是这两种方式的性能
@jonyhy96 大佬 对比测试为什么这里要用for不断去写而多poller方式只写一次,这个对测试结果没有影响吗?
感谢回复,如果我没有理解错的话,多poller方式每个conn应该是只执行了一次io.Copy而多routine却在for循环内不断的执行,这样不会产生影响吗?另外请问这个的err是漏写了吗?
这就是epoll 和 goroutine处理消息的不同姿势。 goroutine在不断循环,如果没有消息自己就阻塞了。 epoll一旦有消息就会读取一条消息,如果还有消息,接下来还会处理,这是epoll edge的处理方式。 所以测试case就是测试这两种不同开发方式的性能。
err漏了,已加上。
@smallnest
@jonyhy96
@smallnest 因为测的就是这两种方式的性能
@jonyhy96 大佬 对比测试为什么这里要用for不断去写而多poller方式只写一次,这个对测试结果没有影响吗?
感谢回复,如果我没有理解错的话,多poller方式每个conn应该是只执行了一次io.Copy而多routine却在for循环内不断的执行,这样不会产生影响吗?另外请问这个的err是漏写了吗?
这就是epoll 和 goroutine处理消息的不同姿势。 goroutine在不断循环,如果没有消息自己就阻塞了。 epoll一旦有消息就会读取一条消息,如果还有消息,接下来还会处理,这是epoll edge的处理方式。 所以测试case就是测试这两种不同开发方式的性能。
err漏了,已加上。
感谢回复,之前没注意到io.CopyN对于TCPCONN来说是一个阻塞的操作
請問可以新增測試一下 prefork 的 IO 密集的測試嗎?
prefork + workerpool 会不会有更好的结果,大佬请指教
第一个问题: 多epoller服务器:
连接 | tps | latency(s) |
---|---|---|
百万 | 197814 | 0.9 |
5000 | 210064 | 23.2 |
200 | 200998 | 0.9 |
对比这组数据,看不懂了。5000连接的延迟为什么这么高?这里的延迟是最大延迟吗?是不是达到20万吞吐的时候就掉连接了? 第二个问题: goroutine-per-connection 服务器: 同时5000连接
连接 | tps | latency(s) |
---|---|---|
无sleep | 203038 | 24 |
sleep 10ms | 203088 | 0.02 |
哈希运算 | 211048 | 0.02 |
这个延迟,没做io和cpu模拟的延迟反而这么高,24秒?
https://colobu.com/2019/02/28/1m-go-tcp-connection-3/