PHP 调用 go grpc 偶尔会返回 Socket closed

2021-02-23 12:47:12 +08:00
 wq67200976

php grpc 调用 go 服务端,偶尔会出现 socket closed 。 相隔 5 秒的两个请求,请求同一个服务,第一个正常返回,第二个出现 socket closed, 有时候却没有问题。可能是业务里加锁的问题吗,但是第一个请求完锁就释放了。即便没有释放,第二个请求也是阻塞。

之前 go 服务挂掉的时候会出现 failed to connect to all addresses,然后会出现 socket closed 。 但是目前服务都正常偶尔出现 socket closed 。 我改如何排查或者复现这个 socket closed 呢

环境 php go nginx 都在 docker 里,php 调用 go 通过 nginx 做了一层转发。

1094 次点击
所在节点    问与答
3 条回复
dilu
2021-02-23 17:50:55 +08:00
超时时间检查一下?
wq67200976
2021-02-23 18:21:58 +08:00
@dilu 不太可能是超时问题,服务端没有报异常, 返回 socekt closed 后,下个请求都还是正常的。10 秒内的 3 个请求,中间的请求出现了 socket closed,很难排查呀。
dilu
2021-02-23 18:29:27 +08:00
@wq67200976 尝试用 strace 看一下系统调用,先判断是 php 的问题还是 go 的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/755410

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX