读书人

Tomcat 调优进程

发布时间: 2012-12-17 09:31:40 作者: rapoo

Tomcat 调优过程

(一)Tomcat存溢出的三情及解决法分析:http://rritw.com/a/fuwuqiruanjian/Tomcat/20110524/86244.html

?

?

1.OutOfMemoryError: Java heap space

2.OutOfMemoryError: PermGen space

3.OutOfMemoryError: unable to create new native thread.

?

(1)JVM中如果98%的是用於GC且可用的 Heap size 不足2%的候出此常信息。

? ? ? ? 解决方法:整-Xms -Xmx参可以解决。

? ? ? ? set JAVA_OPTS= -Xms1024m -Xmx1024m?

(2)如果你的APPLOAD很多CLASS的,就很可能出PermGen space。常在web服器JSP行pre compile的候。

? ? ? ? 解决办法:一一般是加大-XX:PermSize? -XX:MaxPermSize 解决。

? ? ? ??set JAVA_OPTS= -Xms1024m -Xmx1024m? -XX:PermSize=128M -XX:PermSize=256M

(3)主要是和jvm系存的比例有。怪事是因为JVM已被系分配了大量的存(比如1.5G),且它至少要占用可用存的一半。有人,在程很多的情下,你分配给JVM的存越多,那,上述生的可能性就越大。

? ? ? ? 原因分析:

?

每一32位的程最多可以使用2G的可用存,因为另外2G被操作系保留。假使用1.5G给JVM,那下500M可用存。500M存中的一部分必用於系dll的加,那真正剩下的也只有400M,在的地方出了:你使用Java建一程,在JVM的存也建一Thread象,但是同也在操作系建一真正的物理程(参考JVM),操作系在下的400兆存建物理程,而不是在JVM的1500M的存堆建。在jdk1.4,默的大小是256KB,但是在jdk1.5,默的大小为1M每程,因此,在下400M的可用存我最多也只能建400可用程。

. 样就出了,要想建更多的程,你必少分配给JVM的最大存。有一做法是JVM宿主在你的JNI代。

给出一有能建程的最大的估算公式:

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

例:於jdk1.5而言,假操作系保留120M存:

1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads

1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads

?

? ? ? ? 解决办法:最大线程与预留 OS 内存须保持强关系比。共 10G,jvm5G,最大线程 1024。

?

(二)tomcat的maxThreads、acceptCount(最大线程数、最大排队数)

?

?

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

(1)

?

第一种极端情况,如果我们的操作是纯粹的计算,那么系统响应时间的主要限制就是cpu的运算能力,此时maxThreads应该尽量设的小,降低同一时间内争抢cpu的线程个数,可以提高计算效率,提高系统的整体处理能力。

第二种极端情况,如果我们的操作纯粹是IO或者数据库,那么响应时间的主要限制就变为等待外部资源,此时maxThreads应该尽量设的大,这样才能提高同时处理请求的个数,从而提高系统整体的处理能力。此情况下因为tomcat同时处理的请求量会比较大,所以需要关注一下tomcat的虚拟机内存设置和linux的open file限制。

(2)

我在测试时遇到一个问题,maxThreads我设置的比较大比如3000,当服务的线程数大到一定程度时,一般是2000出头,单次请求的响应时间就会急剧的增加,cpu把大多数时间都用来在这2000多个线程直接切换上了,当然cpu就没有时间来处理我们的程序了。

(3)acceptCount的配置,我一般是设置的跟maxThreads一样大,这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。


(三)关于Nginx的一些优化(突破十万并发)http://www.howtocn.org/nginx:%E9%85%8D%E7%BD%AE%E4%B8%80%E4%B8%AA%E9%AB%98%E6%80%A7%E8%83%BD%E7%9A%84nginx_fastcgi%E6%9C%8D%E5%8A%A1%E5%99%A8

?

(四)Linux下高并发socket最大连接数所受的各种限制

http://blog.csdn.net/guowake/article/details/6615728

第一步,修改/etc/sysctl.conf文件,在文件中添加如下行:

net.ipv4.ip_local_port_range = 1024 65000

第二步,执行sysctl命令:

[speng@as4 ~]$ sysctl -p

?

(五)高并发应用中客户端等待、响应时间的推算,及RT/QPS概念辨析

原文:http://www.cnblogs.com/chenjianjx/archive/2012/09/12/2681658.html

RT:响应时间

QPS:

读书人网 >软件开发

热点推荐