最近服务器上面一直出现Tomcat
莫名奇妙的被系统杀掉,后来从系统的日志中找到如下信息:
1 2 |
Oct 10 02:55:16 AY130422143404983ad9 kernel: [451276.905623] Out of memory: Kill process 809 (java) score 241 or sacrifice child Oct 10 02:55:16 AY130422143404983ad9 kernel: [451276.905684] Killed process 809 (java) total-vm:1291052kB, anon-rss:493732kB, file-rss:0kB |
原来是系统内存不足,导致进程被杀掉了,网上搜了一下,解决方法有两个
1.限制Tomcat
使用的内存
方法如下:
1 |
$ sudo vim /usr/share/tomcat7/bin/setenv.sh |
在文件尾部增加如下配置:
1 2 |
#防止Tomcat的OOM export JAVA_OPTS="-server -Xms512M -Xmx1024M" |
然后重启Tomcat
1 |
$ sudo service tomcat7 restart |
2.为阿里云服务器增加swap
分区/swap
文件,来解决物理内存不足的问题
阿里云的服务器默认没有开启交换分区,导致内存极易耗尽导致服务被杀死,解决方法就是手工增加一个交换文件,来解决这个问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#如果要修改或者调整交换文件的大小,需要先停止交换文件,然后才能调整 # sudo swapoff -a #创建一个2G的文件,要求每个扇区512个字节 $ sudo dd if=/dev/zero of=/swaps_file bs=512 count=4194308 $ sudo chmod 0644 swaps_file $ sudo mkswap /swaps_file $ sudo swapon /swaps_file $ sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak.old $ sudo sed -i 's/^vm.swappiness[ \t]*=[ \t]*0$/vm.swappiness = 60/g' /etc/sysctl.conf $ sudo cat /proc/sys/vm/swappiness $ sudo sysctl -w vm.swappiness=60 $ sudo cat /proc/sys/vm/swappiness $ sudo sed -i '$a\/swaps_file swap swap defaults,discard 0 0' /etc/fstab $ sudo cp /etc/rc.local /etc/rc.local.bak.old $ sudo sed -i 's/^swapoff[ \t]*-a$/swapon -a/g' /etc/rc.local |