Ghostsf Blog

Do what i love and just do it !

按此图下载插件 插件名称 pomodoro-tm

设置插件
设置插件
插件的提示功能很全面,休息时间,还会block你的ide哦~

工具栏使用
工具栏使用1
工具栏使用2

这样就开启了番茄工作时间啦~
合理安排时间,提高工作效率,必备良品啊~


在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:

  1.OutOfMemoryError: Java heap space
  2.OutOfMemoryError: PermGen space
  3.OutOfMemoryError: unable to create new native thread.

Tomcat内存溢出解决方案
  对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize)
  最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。
  第一种:是堆溢出。
  原因分析:
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
  没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。
  -Xms:初始堆大小
  -Xmx:最大堆大小

  但堆的大小受下面三方面影响:
  1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G~2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试 1612M,64位操作系统对内存无限制。)
  2.系统的可用虚拟内存限制;
  3.系统的可用物理内存限制。
  堆的大小可以使用 java -Xmx***M version 命令来测试。支持的话会出现jdk的版本号,不支持会报错。
  -Xms -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可
进行设置

实例,以下给出1G内存环境下java jvm 的参数设置参考:
服务器为1G内存:

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
服务器为64位、2G内存:

JAVA_OPTS='-server -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'

=============================================================

前提:是执行startup.bat启动tomcat的方式
Linux服务器:
在/usr/local/apache-tomcat-5.5.23/bin 目录下的catalina.sh
添加:JAVA_OPTS='-Xms512m -Xmx1024m'
或者 JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
或者 CATALINA_OPTS="-server -Xms256m -Xmx300m"

Windows服务器:
在/apache-tomcat-5.5.23/bin 目录下的catalina.bat
添加:set JAVA_OPTS=-Xms128m -Xmx350m
或者 set CATALINA_OPTS=-Xmx300M -Xms256M
(区别是一个直接设置jvm内存,另一个设置tomcat内存,CATALINA_OPTS似乎可以与JAVA_OPTS不加区别的使用)

阅读剩余部分...


为了防止tomcat的内存溢出等问题,可以定时自动重启,以降低运行风险,保持tomcat最佳性能。
写一个shell脚本timerestart.sh来做这件事情,然后用crontab定时执行即可:

   #!/bin/sh  
  
. /etc/profile  
  
pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'`  
echo $pid  
  
if [ -n "$pid" ]  
then  
{  
   echo ===========shutdown================  
   /var/apache-tomcat-7.0.63/bin/shutdown.sh  
   sleep 1   
   pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'`  
   if [ -n "$pid" ]  
   then  
    {  
      sleep 1   
      echo ========kill tomcat==============    
      kill -9 $pid  
    }  
   fi  
   sleep 1  
   echo ===========startup.sh==============  
   /var/apache-tomcat-7.0.63/bin/startup.sh  
 }  
else  
echo ===========startup.sh==============  
/var/apache-tomcat-7.0.63/bin/startup.sh  
  
fi

将此shell脚本文件timerestart.sh放到服务器,然后赋予可执行权限:

chmod a+x timerestart.sh

在控制台上输入以下命令

  crontab -e

按i键编辑这个文本文件,输入以下内容,每天凌晨3:30重启tomcat

  30 03 * * * /root/timerestart.sh

启动定时服务

service crond stop

service crond start

查看定时任务

crontab -l -u xxx

列出所有xxx用户的定时任务

查看定时任务日志

tail -f /var/log/cron 

<textarea> 标签定义多行的文本输入控件。
文本区中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。

若果不作设置或不设定wrap,<textarea></textarea >之间的文字和符合、空格等都会被当作textarea的值,在html页面上展现出来。

为了避免<textarea>标签莫名多出来N多空格,<textarea>应该紧跟靠拢着写;

即,把如下形式:

<textarea.....>   
   内容.....   
</textarea>   

改成

<textarea.....> 内容.....</textarea>   

java.net.UnknownHostException: xwx.archermind.com: xwx.archermind.com: Name or service not known
......
Caused by: java.net.UnknownHostException: xwx.archermind.com: Name or service not known

Cause

Stash is unable to identify the host name being used to access the application.

Resolution

  1. Add the host name to your hosts file. Usually adding the exposed on the log above to the /etc/hosts of Stash server, associating it to 127.0.0.1 followed by a Stash restart will solve the problem. The entry in /etc/hosts should resemble the following:

    1
    127.0.0.1 hostname

  2. If using a DNS server ensure that the service resolves the queries for the hostname into the correct IP address.

  3. Maybe the name of your System is wrong.


ghostsf All rights reserved. 苏ICP备15036367号 本站总访问量