mongodb事务解决方案 cannot allocate memory 怎么解决

查看:4626|回复:9
初级工程师
我公司服务器上有个服务器,系统是64位的红帽,内存为32G,cpu为24核的,该服务器上部署了5个tomcat服务,还有一个颇为消耗内存的导航服务,但不管几个服务,其上总是剩余10G左右内存,cpu利用率
也不高,但自从某台该服务器不正常关机后,当启动起来时,导航服务就和某个tomcat不能共存,
就是说,若是导航服务正常运行的话,该tomcat就会不能正常访问,后台日志会打印出以下错误:
[ERROR][thread ] Could not start thread INCompressor. Cannot allocate memory
[ERROR][thread ] Could not start thread INCompressor. Cannot allocate memory
[ERROR][thread ] Could not start thread INCompressor. Cannot allocate memory
[ERROR][thread ] Could not start thread Keep-Alive-Timer. Cannot allocate memory
[ERROR][thread ] Could not start thread INCompressor. Cannot allocate memory
[ERROR][memory ] [OC#305] Could not commit 381900KB heap memory at 0x.
[ERROR][memory ] [OC#306] Could not commit 690536KB heap memory at 0x.
[ERROR][memory ] [OC#307] Could not commit 682904KB heap memory at 0x.
严重: Error allocating socket processor
java.lang.OutOfMemoryError: Cannot allocate memory in tsStartJavaThread (lifecycle.c:1096).
Java heap 6072M reserved, 1165844K committed
Paged memory=748K.
Your Java heap size might be set too high.
Try to reduce the Java heap size using -Xmx:&size& (e.g. &-X
& && &&&at java.lang.Thread.start0(Native Method)
& && &&&at java.lang.Thread.start(Thread.java:640)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint$Worker.start(JIoEndpoint.java:468)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint.newWorkerThread(JIoEndpoint.java:678)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint.createWorkerThread(JIoEndpoint.java:657)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint.getWorkerThread(JIoEndpoint.java:689)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint.processSocket(JIoEndpoint.java:724)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:312)
& && &&&at java.lang.Thread.run(Thread.java:662)
[ERROR][thread ] Could not start thread http-. Cannot allocate memory
10:09:00 org.apache.tomcat.util.net.JIoEndpoint processSocket
严重: Error allocating socket processor
java.lang.OutOfMemoryError: Cannot allocate memory in tsStartJavaThread (lifecycle.c:1096).
Java heap 6072M reserved, 1165844K committed
Paged memory=748K.
Your Java heap size might be set too high.
Try to reduce the Java heap size using -Xmx:&size& (e.g. &-X
& && &&&at java.lang.Thread.start0(Native Method)
& && &&&at java.lang.Thread.start(Thread.java:640)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint$Worker.start(JIoEndpoint.java:468)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint.newWorkerThread(JIoEndpoint.java:678)
& && &&&at org.apache.tomcat.util.net.JIoEndpoint.createWorkerThread(JIoEndpoint.java:657)
其中JAVA 版本为1.6的,该tomcat内存我设置的是“-Xms256m -Xmx6072m”,
当我用top命令查看时,该tomcat的RES为5.3g,VIRT为6874m,若我把导航服务关掉后,就不会报错,可以正常访问,还有一点是我启动mongodb的时候,怎么也起不来,看后台日志,有报“ERROR:mmap private failed with out of memory”,而且当我用Java -version的时候,有报“couldn't create the Java virtual machine ’”
助理工程师
引用:原帖由 yxm@benet 于
17:15 发表
我公司服务器上有个服务器,系统是64位的红帽,内存为32G,cpu为24核的,该服务器上部署了5个tomcat服务,还有一个颇为消耗内存的导航服务,但不管几个服务,其上总是剩余10G左右内存,cpu利用率
也不高,但自从某台该服务器不正常关机 ... java.lang.OutOfMemoryError: Cannot allocate memory in tsStartJavaThread (lifecycle.c:1096).
Java heap 6072M reserved, 1165844K committed
Paged memory=748K.
Your Java heap size might be set too high.
通过这几句话错误可以判断,是内存溢出的问题。有两种解决方案:1.将你的tomcat jvm虚拟内存设置小一些,看是否可以解决这个问题。2.如果还是报错,你就添加内存吧。
有个问题问你,你的TOMCAT并发是多少呀?这是是否有计算,如果你的并发太大,需要更改server.xml配置文件的最大连接数:max_connections=100000
removeAbandoned=&true&
removeAbandonedTimeout=&60&
logAbandoned=&true&
maxActive=&500&
maxIdle=&10&
maxWait=&5&
本帖最后由 david_bj 于
17:44 编辑
初级工程师
引用:原帖由 david_bj 于
17:42 发表
java.lang.OutOfMemoryError: Cannot allocate memory in tsStartJavaThread (lifecycle.c:1096).
Java heap 6072M reserved, 1165844K committed
Paged memory=748K.
Your Java heap size ... 并发连接数有5、600吧,有时候是800多,但大多数都是time_wait,另外我若设置小了的话,可能会报java heap space,因为该tomcat开启时间长了,内存需求会增加到5.3G,若低于5G的话也会报错,另,内存是够用的,所有的服务运行一段时间后,会有8-10g的内存空闲。
助理工程师
引用:原帖由 yxm@benet 于
17:54 发表
并发连接数有5、600吧,有时候是800多,但大多数都是time_wait,另外我若设置小了的话,可能会报java heap space,因为该tomcat开启时间长了,内存需求会增加到5.3G,若低于5G的话也会报错,另,内存是够用的,所有的服务运行一段时间 ... 800这个数值来说,也不是特别高。TIME_WAIT状态特别多的话,看一下TCP/IP链接谁请求谁出现大量的TIME_WAIT。我之前也遇到过大量的TIME_WAIT,是数据库连接出现问题导致到。看一下数据库链接。
助理工程师
引用:原帖由 yxm@benet 于
17:54 发表
并发连接数有5、600吧,有时候是800多,但大多数都是time_wait,另外我若设置小了的话,可能会报java heap space,因为该tomcat开启时间长了,内存需求会增加到5.3G,若低于5G的话也会报错,另,内存是够用的,所有的服务运行一段时间 ... 我感觉TOMCAT内存释放机制不是特别好,但是从官方看文档说TOMCAT有内存回收机制。我现在做了一个任务计划,每隔一段时间对内存释放一下。你可以参考一下。
初级工程师
引用:原帖由 david_bj 于
18:12 发表
800这个数值来说,也不是特别高。TIME_WAIT状态特别多的话,看一下TCP/IP链接谁请求谁出现大量的TIME_WAIT。我之前也遇到过大量的TIME_WAIT,是数据库连接出现问题导致到。看一下数据库链接。 ... 单个ip请求最多的也就是8个连接左右,该tomcat用的是内嵌的数据库,数据库连接方面问题也不大。
初级工程师
引用:原帖由 david_bj 于
18:15 发表
我感觉TOMCAT内存释放机制不是特别好,但是从官方看文档说TOMCAT有内存回收机制。我现在做了一个任务计划,每隔一段时间对内存释放一下。你可以参考一下。 ... 好的,多谢
初级工程师
引用:原帖由 david_bj 于
18:15 发表
我感觉TOMCAT内存释放机制不是特别好,但是从官方看文档说TOMCAT有内存回收机制。我现在做了一个任务计划,每隔一段时间对内存释放一下。你可以参考一下。 ... 不知你所说的任务计划在哪里呢??
初级工程师
千万别沉下了,希望大家都指点下
初级工程师
我系统里有许多tomcat,每个tomcat设置的heap size比较大,每个适当调小点,就没有报该问题部署NGINX+MongoDB+GridFS文件服务器出现的内存溢出问题
[问题点数:60分]
部署NGINX+MongoDB+GridFS文件服务器出现的内存溢出问题
[问题点数:60分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 cannot access memory 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信