(一)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)如果你的APP會LOAD很多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:
分享到:
相关推荐
总之,Tomcat调优和JVM参数优化是一个细致的过程,需要结合服务器硬件、应用负载和业务特性进行。通过合理的配置,不仅可以提高应用性能,还能降低服务器资源的浪费,实现更高效、稳定的运行环境。在实际操作中,...
在优化Apache Tomcat服务器以提高性能的过程中,有多个关键配置参数需要调整。这些调整主要集中在JVM内存设置和Tomcat的Connector配置上。下面将详细解释这些参数的含义及其优化方法。 首先,我们关注的是`JAVA_...
Tomcat调优是提高应用程序性能的关键步骤,尤其对于处理高并发和大数据量的应用来说更为重要。...以上是针对Tomcat的一些基本调优策略,实际调优过程可能需要根据应用的具体需求和服务器环境进行更细致的调整。
《Tomcat调优配置技巧详解》 在软件开发领域,优化服务器性能是至关重要的,尤其对于使用Apache Tomcat作为应用服务器的情况。Tomcat以其轻量级、高效的特点被广泛采用,但随着应用规模的扩大,对其进行调优配置就...
在进行Tomcat调优时,首先需要理解其服务器与JVM的基本信息及其重要性。 **1.1 JVM区域分配** - **PSEdenSpace(新生代)**: 新创建的对象一般会被分配到这里。在垃圾回收过程中,大部分不再使用的对象将在这里被...
总结,Tomcat服务器性能调优是一个综合性的过程,涵盖了操作系统、JVM、Web服务器集成和集群等多个方面。每个环节的优化都能带来性能提升,根据实际应用场景和需求,灵活选择并调整这些参数,可以最大限度地提升系统...
### Tomcat调优详解 #### 一、引言 Apache Tomcat是一款开源的Servlet容器,主要用以运行Java应用程序。由于其轻量级且易于部署的特点,在开发与生产环境中广泛被采用。然而,随着业务的增长及并发访问量的提高,...
本资料主要涵盖了五个核心领域:Java并发(JUC)、非阻塞I/O(NIO)、Netty框架、Tomcat服务器优化以及Java虚拟机(JVM)调优。以下是这些主题的详细说明: 1. **Java并发(JUC - Java Concurrency Utilities)** ...
【标题】"Tomcat JVM参数调优"涉及的是在运行Apache Tomcat服务器时优化Java虚拟机(JVM)性能的过程。Tomcat是一个流行的开源Java应用服务器,它用于部署和运行Java Servlets和JavaServer Pages(JSP)。由于JVM是...
在IT行业中,尤其是在Java Web应用领域,Tomcat作为一款轻量级的应用服务器,因其小巧、高效而被广泛应用。然而,随着应用规模的扩大,性能...当然,调优是一个持续的过程,需要根据实际业务情况不断进行监控和调整。
### Tomcat7 优化与性能调优 #### 一、引言 在现代Web应用开发中,Apache Tomcat因其轻量级、灵活且易于部署的特点成为开发者们的首选应用服务器之一。然而,在面对高并发访问场景时,如何有效地优化Tomcat以提高...
Tomcat性能调优是一个涉及多方面技术的复杂过程,主要包括对外部环境的调整和Tomcat自身配置的优化。在实际应用中,我们需要通过压力测试来评估系统的性能表现,然后根据测试结果进行必要的优化。 **1. 外部环境...
总结来说,WebLogic、Tomcat和WebSphere的调优是一个持续优化的过程,涉及到多个层次的参数调整,包括服务器配置、JVM设置、应用部署描述符和连接池管理等。每个服务器都有其独特的调优策略,需要根据实际应用需求和...
### Tomcat优化——Tomcat 的性能调优的原理和方法 #### 一、概述 Tomcat作为一款广泛使用的开源Web服务器容器,其性能直接影响到基于它的应用程序的表现。本文旨在介绍Tomcat性能调优的基本原理与具体实施方法,...
总的来说,Tomcat JVM调优是一个涉及多方面因素的复杂过程,需要结合应用特点、硬件资源以及运行环境,通过不断的测试和调整,找到最优的配置方案。理解JVM的工作原理,熟练掌握各种调优参数,以及运用有效的监控...