记一次生产线程数耗尽,导致内存溢出(outOfMemoryError)问题

问题:

  数据源连接池线程数最大连接数最初设置300,但是一周有2-3次发生活跃连接数超过最大线程数,导致线程堵塞,服务查询等待超时,所以运维将最大线程数调至1500,这样导致JVM创建的线程数大大增多,原先配置的JVM内存不够使用,导致内存溢出,无法创建线程。

解决:

  后将最大线程数调至1024,保证不会超过JVM内存限制。

系统能创建的线程数的计算公式如下:

    (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

    MaxProcessMemory 指的是一个进程的最大内存

    JVMMemory         JVM内存

    ReservedOsMemory  保留的操作系统内存

    ThreadStackSize      线程栈的大小

猜你喜欢

转载自www.cnblogs.com/pluto-yang/p/12625592.html