Elasticsearch崩溃解决办法
部分日志如下:
# There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory. # Possible reasons: # The system is out of physical RAM or swap space # In 32 bit mode, the process size limit was hit # Possible solutions: # Reduce memory load on the system # Increase physical memory or swap space # Check if swap backing store is full # Use 64 bit Java on a 64 bit OS # Decrease Java heap size (-Xmx/-Xms) # Decrease number of Java threads # Decrease Java thread stack sizes (-Xss) # Set larger code cache with -XX:ReservedCodeCacheSize= # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:2640), pid=14587, tid=0x00007ff9ff3d8700 # # JRE version: (8.0_131-b11) (build ) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode linux-amd64 compressed oops) # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # --------------- T H R E A D --------------- Current thread (0x00007ff9f800b000): JavaThread "Unknown thread" [_thread_in_vm, id=14604, stack(0x00007ff9ff2d8000,0x00007ff9ff3d9000)] Stack: [0x00007ff9ff2d8000,0x00007ff9ff3d9000], sp=0x00007ff9ff3d7370, free space=1020k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0xac826a] VMError::report_and_die()+0x2ba V [libjvm.so+0x4fd4cb] report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*)+0x8b V [libjvm.so+0x924f53] os::Linux::commit_memory_impl(char*, unsigned long, bool)+0x103 V [libjvm.so+0x9254a9] os::pd_commit_memory(char*, unsigned long, unsigned long, bool)+0x29 V [libjvm.so+0x91f6ca] os::commit_memory(char*, unsigned long, unsigned long, bool)+0x2a V [libjvm.so+0xac3fc9] VirtualSpace::expand_by(unsigned long, bool)+0x199 V [libjvm.so+0xac4b1e] VirtualSpace::initialize(ReservedSpace, unsigned long)+0xee V [libjvm.so+0x5fb921] CardGeneration::CardGeneration(ReservedSpace, unsigned long, int, GenRemSet*)+0xf1 V [libjvm.so+0x4e6b9e] ConcurrentMarkSweepGeneration::ConcurrentMarkSweepGeneration(ReservedSpace, unsigned long, int, CardTableRS*, bool, FreeBlockDictionary<FreeChunk>::DictionaryChoice)+0x4e V [libjvm.so+0x5fc9e2] GenerationSpec::init(ReservedSpace, int, GenRemSet*)+0xf2 V [libjvm.so+0x5eb81e] GenCollectedHeap::initialize()+0x1de V [libjvm.so+0xa902e3] Universe::initialize_heap()+0xf3 V [libjvm.so+0xa9084e] universe_init()+0x3e V [libjvm.so+0x63e3e5] init_globals()+0x65 V [libjvm.so+0xa73f3e] Threads::create_vm(JavaVMInitArgs*, bool*)+0x23e V [libjvm.so+0x6d2ce4] JNI_CreateJavaVM+0x74 C [libjli.so+0x745e] JavaMain+0x9e C [libpthread.so.0+0x76ba] start_thread+0xca
我感到一丝丝绝望,因为我的服务器内存2G,来自穷人的蓝瘦香菇。
解决办法:
1.释放内存
2.修改/etc/sysctl.config文件
vm.swappiness = 1
3.修改elasticsearch.yml:
bootstrap.mlockall: true