Doris be运行一段时间后异常断开连接
报错提示:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Minidump created at: /home/ec2-user/doris/be/minidump/9b820b8c-9591-4c1f-557f0597-62edfe46.dmp
*** Aborted at 1639572821 (unix time) try "date -d @1639572821" if you are using GNU date ***
PC: @ 0x7feb5ab0aca0 __GI_raise
*** SIGABRT (@0x4f71) received by PID 20337 (TID 0x7feab8080700) from PID 20337; stack trace: ***
@ 0x2149ad2 google::(anonymous namespace)::FailureSignalHandler()
@ 0x7feb5ab0ad10 (unknown)
@ 0x7feb5ab0aca0 __GI_raise
@ 0x7feb5ab0c148 __GI_abort
@ 0x1030f7f _ZN9__gnu_cxx27__verbose_terminate_handlerEv.cold
@ 0x3898ca6 __cxxabiv1::__terminate()
@ 0x3898d11 std::terminate()
@ 0x3898e64 __cxa_throw
@ 0x103004c _ZN12_GLOBAL__N_110handle_oomEPFPvS0_ES0_bb.cold
@ 0x396307f tcmalloc::allocate_full_cpp_throw_oom()
@ 0x38b7991 std::string::_Rep::_S_create()
@ 0x38b87ce std::string::_Rep::_M_clone()
@ 0x38b8884 std::string::reserve()
@ 0x38b8c8c std::string::append()
@ 0x14fdb9d apache::thrift::protocol::TBinaryProtocolT<>::readStringBody<>()
@ 0x14fdcfc apache::thrift::protocol::TVirtualProtocol<>::readMessageBegin_virt()
@ 0x1727fab apache::thrift::TDispatchProcessor::process()
@ 0x2135021 apache::thrift::server::TConnectedClient::run()
@ 0x212d8c3 apache::thrift::server::TThreadedServer::TConnectedClientRunner::run()
@ 0x212ff83 apache::thrift::concurrency::Thread::threadMain()
@ 0x211f7e0 std::thread::_State_impl<>::_M_run()
@ 0x39148b0 execute_native_thread_routine
@ 0x7feb5a8c040b start_thread
@ 0x7feb5abc440f __GI___clone
@ 0x0 (unknown)
问题原因
内存溢出,由于是测试环境,我们选用的 EC2 实例内存(1G)比较小,容易出现内存溢出。
解决办法
① 增加机器内存
② 设置 echo 1 > /proc/sys/vm/overcommit_memory 允许过量使用内存.
sudo -i
echo 1 > /proc/sys/vm/overcommit_memory
直接使用sudo echo 1 > /proc/sys/vm/overcommit_memory 也会提示 Permission denied。