Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

咨询 #1

Open
miracleyfm opened this issue Jun 14, 2017 · 2 comments
Open

咨询 #1

miracleyfm opened this issue Jun 14, 2017 · 2 comments

Comments

@miracleyfm
Copy link

看到了你关于quic的研究成果。你研究的深入!感谢你的信息。
我最近利用libquic和你说的toy接口为基础,编写客户端和服务端接口代码,编写完成后单独测试没问题(采用阻塞模式,即使用while循环调用waitforevents),但把quic集成到我们的系统时,采用非阻塞模式调用waitforevents时,却出现了段错误。你有什么的建议和经验?十分感谢你的回复。

@y123456yz
Copy link
Owner

y123456yz commented Jun 15, 2017

@miracleyfm
最近下班业务时间,走读了下代码,toy只能用来做简单的测试,用在生产环境中是不合适的,存在以下几个问题:

  1. 网络异常处理考虑不全
  2. 大包传输网络读写事件处理返回EAGAIN没考虑,在极端情况会引起数据包读不全等问题。
  3. 该测试程序只是简单的单线程收发网络模型,无法充分利用现有的CPU多核机制,可以参考nginx的网络模型或者memcached网络模型来实现基于udp的网络模型。
  4. toy中有份tcp和udp-quic的测试数据对比,实际上这个对比是没有意义的,因为toy中的udp-quic数据收发多了握手协商和加解密处理,因此没有可比性,应该拿测试中的udp-quic于https(带tls认证)来做对比。

至于你代码中说的出现短错误,这个你可以通过GDB调试或者启用coredump功能。

建议:
在把quic使用到具体项目中前,最好把quic代码读透,否则线上出现问题,你没办法把控。

toy例子只能作为简单的学习quic的工具,不适用于线上生产环境。

以上是最近两周业余时间读代码看出的一些问题,可能还有会其他坑存在。由于工作原因,不能花太多时间在上面,我只能帮你到这里了。
希望对你又帮助。

@RinCelery
Copy link

有可能是你用的不是单线程模型引起的。收发数据在一个线程里试试

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants