1、5tF Pnet.ipv4.tcp_tw_reuse = 1$_zuz9g dynet.ipv4.tcp_tw_recycle = 1y+_&Fq$BC;fxxxxxx$sysctl -p,使内核参数生效socket-faq中的这一段讲time_wait的,摘录如下:中博IT教育网.J00VE;m- y2.7. Please explain the TIME_WAIT state.Jfpo8w(9K?NP;tS7Z8 CRemember that TCP guarantees all data transmitted will be delivered,3:当您尝试从 TCP 端口大于 500
2、0 连接收到错误 WSAENOBUFS (10055) 症状如果您尝试建立 TCP 连接从端口是大于 5000, 本地计算机响应并以下 WSAENOBUFS (10055) 错误信息:I3C9j Jx因为系统缺乏足够缓冲区空间或者因为队列已满无法执行套接字上操作。要点 此部分, 方法或任务包含步骤告诉您如何修改注册表。 但是, 如果修改注册表错误可能发生严重问题。 因此, 确保仔细执行这些步骤。 用于添加保护之前, 修改备份注册表。 然后, 在发生问题时还原注册表。 有关如何备份和还原注册表, 请单击下列文章编号以查看 Microsoft 知识库中相应: 中博IT教育网A/KcN;AY 默认最
3、大数量的短暂 TCP 端口为 5000 适用于 部分中包含产品中。 这些产品中已添加新参数。 要增加最大值是短暂端口, 请按照下列步骤操作:W/j N6a5g*T|%?1. 启动注册表编辑器。 中博IT教育网n-h3KG)IF X2. 注册表, 中找到以下子项, 然后单击 参数 :e7c#q&eHKEY _ LOCAL _ MACHINESYSTEMCurrentControlSetServicesTcpipParameters w6z9H4mA#D;L3. 在 编辑 菜单, 单击 新建 , 然后添加以下注册表项:q+HrV*D MMaxUserPort 值名称:+Lgx6h,BT值类型: D
4、WORDX$f!sqT w3W&M值数据: 65534N:CaX%U m:7?o有效范围: 5000 - 65534 (十进制)中博IT教育网TY T)Ii默认: 0x1388 5000 (十进制)9u$D Y7g1DQ,zuCN说明: 此参数控制程序从系统请求任何可用用户端口时所用最大端口数。 通常, 1024 的值和含 5000 之间分配临时 (短期) 端口。!r2X? t MLJ4. 退出注册表编辑器, 并重新启动计算机。.m6Eg3Ym(?#S2A:%EoDL7hz注意 一个附加 TCPTimedWaitDelay 注册表参数决定多久关闭端口等待可以重用关闭端口。 中博IT教育网(qO
5、x3g4IZ/M4:java.lang.OutOfMemoryError: Java heap spaceHeap size 设置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的时候将抛
6、出此异常信息。Heap Size 最大不要超过可用物理内存的80,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。解决方法: 手动设置Heap size 修改TOMCAT_HOME/bin/catalina.bat,在“echo Using CATALINA_BASE: $CATALINA_BASE”上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m或修改catalina.sh在“echo JAVA_OPTS=$JAVA_OPTS -server -Xms80
7、0m -Xmx800m -XX:MaxNewSize=256m5: tomcat : PermGen space1、设置tomcat6w.exe在Java Options添加:-XX:PermSize=256mMaxPermSize=512m2、在环境变量里面配置:环境变量:-Xms512m -Xmx1024m -XX:PermSize=256m -XX:环境变量名:JAVA_OPTS$JAVA_OPTS-serverPermSize=128MMaxPermSize=512m3、非安装版设置如下:修改TOMCAT_HOME/bin/catalina.sh-server -XX:PermSize
8、=256M -XX: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果APP会LOAD很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候,超过了jvm默认的大小(4M)那么就会产生
9、此错误信息了建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。具体内存占用可自行按计算机内存设置。解决办法2:修改$tomcat_homebincatalina.sh看tomcat help doc得知”上面加入-server -Xms768m -Xmx768m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true winows xp环境跑tomcat向oracle进行大数据量的导入(含有pdf、doc等4
10、0M的文件),tomcat报java.lang.OutOfMemoryError: Java heap space错误。我的解决办法:增加环境变量(注:tomcat 所在机器为4G内存,当然xp只是认出了3.25G)JAVA_OPTS=-Xms512M -Xmx1024m -XX:MaxNewSize=128m -XX:MaxPermSize=128m相关资料:tomcat 遇到TOMCAT出错: Java heap space,于是查了资料,找到了解决方法:If Java runs out of memory, the following error occurs:Exception in
11、thread main java.lang.OutOfMemoryError:Java heap size can be increased as follows:java -Xms -XmxDefaults are:java -Xms32m -Xmx128m如果你用win/tomcat/bin/catalina.bat 加上下面的命令:set JAVA_OPTS=-Xms32m -Xmx256m如果你用unix/linux/tomcat/bin/catalina.sh 加上下面的命令:-Xms32m -Xmx256m以下是有关Java垃圾回收机制详解和调优的文章地址:Tomcat内存溢出的三
12、种情况及解决办法分析url:生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1.OutOfMemoryError: 2.OutOfMemoryError: 3.OutOfMemoryError: unable to create new native thread. Tomcat内存溢出解决方案 对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。
13、(-Xms -Xmx -XX:PermSize -XX:MaxPermSize) 最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。 第一种:是堆溢出。 在JVM中如果98的时间是用于GC且可用的 Heap size 不足2的时候将抛出此异常信息。 没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。 -Xms:初始堆大小 -Xmx:最大堆大小 但堆的大小受下面三方面影响: 1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试 1612
14、M,64为操作系统对内存无限制。) 2.系统的可用虚拟内存限制; 3.系统的可用物理内存限制。 堆的大小可以使用 java -Xmx*M version 命令来测试。支持的话会出现jdk的版本号,不支持会报错。 -Xms -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m 第二种:永久保存区域溢出 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance
15、的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。但目前的hibernate和spring项目中也很容易出现这样的问题。 的帖子有讨论的这个问题。可能是由于这些框架会动态class,而且jvm的gc是不会清理PemGen space的,导致内存溢出。 这一个一般是加大-XX:MaxPermSize 来解决问题。 -XX:PermSize 永久保存区域初始大小PermS
16、ize 永久保存区域初始最大值 这一般结合第一条使用,比如 set JAVA_OPTS= -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:PermSize=256M 有一点需要注意:java -Xmx*M version 命令来测试的最大堆内存是 -Xmx与 -XX:PermSize的 和 比如系统支持最大的jvm堆大小事1.5G,那 -Xmx1024m -XX:PermSize=768M 是无法运行的。 第三种:无法创建新的线程。 这种现象比较少见,也比较奇怪,主要是和jvm与系统内存的比例有关。 这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5
17、G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。 产生这种现象的原因如下(从这个blog中了解到原因: 每一个32位的进程最多可以使用2G的可用内存,因为另外2G被操作系统保留。这里假设使用1.5G给JVM,那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的400兆内存里创
18、建这个物理线程,而不是在JVM的1500M的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程,因此,在余下400M的可用内存里边我们最多也只能创建400个可用线程。 这样结论就出来了,要想创建更多的线程,你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。 给出一个有关能够创建线程的最大个数的估算公式: (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads 对于jdk1.5而言,假
19、设操作系统保留120M内存: 1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = 380 threads 1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = 880 threads 在2000/XP/2003的boot.ini里头有一个启动选项,好像是:/PAE /3G ,可以让用户进程最大内存扩充至3G,这时操作系统只能占用最多1G的虚存。那样应该可以让JVM创建更多的线程。 因此这种情况需要结合操作系统进行相关调整。因此:我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题6:java.lang.IllegalStateE
20、xception: getOutputStream() has already been called for this response原因一:JSP默认的输出流为PrintWriter ,即以外的东西所默认的输出方式,如果你尝试在JSP中使用ServletOutputStream就会引起错误.要嘛直接改用Servlet输出(复写service方法),要嘛删除除%之间的所有内容包括空格和换行符,最后也要消除空格和换行符,最好再加上一句response.reset()。原因二:在J2EE的API参考里有这么个:ServletResponse的getWriter()方法里会抛出这个异常,Ille
21、galStateException - if the getOutputStream method has already been called for this response object而它的getOutputStream()方法里会抛出这个异常.IllegalStateException - if the getOutputStream method has already been called for this response object并且两者的函数申明里都有这么样的一句Either this method or getOutputStream() may be call
22、ed to write the body, not both.Either this method or getWriter() may be called to write the body, not both.以上说明也解释了为什么在往页面中写入图片的时候要使用如下循环格式OutputStream output=response.getOutputStream();while(len=in.read(b) 0) output.write(b,0,len);output.flush();而不是把response.getOutputStream().write()放到循环体内在使用完输出流以后
23、调用以下两行代码即可:out.clear();out = pageContext.pushBody();7:启动TOMCAT时出现java.lang.NoClassDefFoundError: org/apache/commons/beanutils/Converter严重: Servlet ildren threw load() exceptionjava.lang.NoClassDefFoundError:at java.lang.Class.getDeclaredConstructors0(Native Method)at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)at java.lang.Class.getConstructor0(Class.java:2640)at java.lang.Class.newInstanc
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1