通过在libc.so.6的mmap()入口设置断点,确认8MB的VMA主要是pthread_create()创建线程时调用mmap()创建的线程堆栈。pthread_create()默认使用的线程堆栈大小是系统资源限制中的“stack size”,默认即8MB,参见man pthread_create。
nebula的metad、graphd、storaged三个进程的线程数都爆多,可能是因为使用thrift、folly库的大量异步IO功能,且没有参数可以控制,曾观察到线程数失控现象,是内存爆炸的一个可能原因。