繁体   English   中英

调用fork之后,gRPC服务器中的SSL握手失败

[英]SSL handshake fails in gRPC server after calling fork

我试图通过分叉孩子并让父出口使c ++ gRPC服务器成为守护进程。 但是之后,客户端握手开始失败。

E0307 01:15:58.221786152 27094 handshake.c:128] Security handshake failed: 
{"created":"@1488878158.221756436","description":"Handshake read failed",
"file":"src/core/lib/security/transport/handshake.c",
"file_line":237,"referenced_errors":
[{"created":"@1488878158.221740996","description":"FD shutdown",
"file":"src/core/lib/iomgr/ev_epoll_linux.c","file_line":948}]}

在对BuildAndStart()的调用之后调用fork()时,会发生这种情况。 如果在BuildAndStart()之前完成相同的派生,则一切正常。 我对底层SSL实现以及gRPC服务器如何使用密钥和证书不了解。

与该连接相对应的文件描述正在关闭,这导致SSL握手失败。 首先关闭FD的原因可能是由于在分叉之后,父级和子级都共享内核中的文件描述符结构。 因此,除非非常注意同步访问,否则您将进行数据争夺。

如果可能,请尽早分叉。 否则,这完全取决于父母和孩子的后叉处理方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM