ranxuxin opened a new issue, #9007:
URL: https://github.com/apache/apisix/issues/9007
### Current Behavior
There're too many tcp connections when using http1.1 to communicate with
etcd cluster before apisix 3.1.0. To reduce
connections, I upgrade apisix to 3.1.0 to use grpc connecting to etcd
cluster. At beginning, it does reduce connections to etcd cluster. However, it
generates core dump without any manually operation in the early morning.
Apisix's error log indicates that Apisix 3.1.0 generate core dump while
receiving grpc client stream. Is the function that grpc connects to etcd
cluster in apisix 3.1.0 still experimental? When could it be ready for
productive environment, please?
use gdb to show backstack of core dump generated by openresty is as below:
(gdb) bt
warning: skipping .debug_frame info of
/usr/local/openresty/libgrpc_engine.so: Found an FDE when not expecting it.
#0 0x00007fa821c631c1 in runtime.raise.abi0 () from
/usr/local/openresty/libgrpc_engine.so
#1 0x00007fa821c47365 in runtime.dieFromSignal () from
/usr/local/openresty/libgrpc_engine.so
#2 0x000000c000000006 in ?? ()
#3 0x00007fa821c3075a in runtime.preprintpanics () from
/usr/local/openresty/libgrpc_engine.so
#4 0x000000c009d23ac8 in ?? ()
#5 0x00007fa821c31d2d in runtime.fatalpanic () from
/usr/local/openresty/libgrpc_engine.so
#6 0x000000c000000006 in ?? ()
#7 0x01007fa821c30909 in ?? ()
#8 0x00007fa821c31d60 in ?? () from /usr/local/openresty/libgrpc_engine.so
#9 0x000000c009d23b50 in ?? ()
#10 0x000000c00abd36c0 in ?? ()
#11 0x00007fa821c313fa in runtime.gopanic () from
/usr/local/openresty/libgrpc_engine.so
#12 0x000000c009d23ad8 in ?? ()
#13 0x000000c009d23a97 in ?? ()
#14 0x000000c009d23b88 in ?? ()
#15 0x00007fa821c313fa in runtime.gopanic () from
/usr/local/openresty/libgrpc_engine.so
#16 0x0000000000000000 in ?? ()
### Expected Behavior
_No response_
### Error Logs
the panic backstack in apisix error log as below:
2023/03/06 05:57:08 [notice] 4157#4157: signal 17 (SIGCHLD) received from
4164
2023/03/06 05:57:08 [alert] 4157#4157: worker process 4164 exited on signal
6 (core dumped)
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x7fa821f82220]
goroutine 5384582 [running]:
google.golang.org/grpc/internal/status.(*Error).GRPCStatus(0x7fa82200fbe6?)
/root/go/pkg/mod/google.golang.org/[email protected]/internal/status/status.go:155
google.golang.org/grpc/status.FromError({0x7fa8221db020, 0x0})
/root/go/pkg/mod/google.golang.org/[email protected]/status/status.go:94
+0xea
google.golang.org/grpc.toRPCErr({0x7fa8221db020, 0x0})
/root/go/pkg/mod/google.golang.org/[email protected]/rpc_util.go:848
+0x288
google.golang.org/grpc.(*csAttempt).recvMsg(0xc00986adc0, {0x7fa8221c5e40?,
0xc0097c0090}, 0x1?)
/root/go/pkg/mod/google.golang.org/[email protected]/stream.go:1002 +0x3ba
google.golang.org/grpc.(*clientStream).RecvMsg.func1(0xc009f9984c?)
/root/go/pkg/mod/google.golang.org/[email protected]/stream.go:845 +0x25
google.golang.org/grpc.(*clientStream).withRetry(0xc009f997a0, 0xc00ad6cf20,
0xc00ad6cef0)
/root/go/pkg/mod/google.golang.org/[email protected]/stream.go:705 +0x2f1
google.golang.org/grpc.(*clientStream).RecvMsg(0xc009f997a0,
{0x7fa8221c5e40?, 0xc0097c0090?})
/root/go/pkg/mod/google.golang.org/[email protected]/stream.go:844 +0x11f
github.com/api7/grpc-client-nginx-module/conn.(*Stream).Recv(0xc00ad6cfb0?)
/tmp/tmp.tYflEs0Gp1/grpc-client-nginx-module-v0.4.1/grpc-engine/conn/grpc.go:192
+0x7a
main.grpc_engine_stream_recv.func1()
/tmp/tmp.tYflEs0Gp1/grpc-client-nginx-module-v0.4.1/grpc-engine/main.go:233
+0x26
created by main.grpc_engine_stream_recv
/tmp/tmp.tYflEs0Gp1/grpc-client-nginx-module-v0.4.1/grpc-engine/main.go:232
+0x91
### Steps to Reproduce
1. configure apisix3.1.0 as below:
deployment:
role: traditional
role_traditional:
config_provider: etcd
admin:
admin_key:
- name: admin
key: ilikecocacola # using fixed API token has security risk,
please update it when you deploy to production environment
role: admin
etcd:
use_grpc: true
host:
- "http://10.26.21.245:12378"
nginx_config:
error_log: /data0/apisix_error.log
error_log_level: notice
worker_processes: auto
### Environment
apisix 3.1.0
openresty/1.21.4.1
centos 7 linux kernel:3.10.0-862.14.4.el7.x86_64
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]