(一)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性能优化 调优 tomcat 性能优化 优化详解 优化步骤 优化过程
weblogicTomcatWebsphere调优方法
该文档为在性能测试过程中对一些中间件的调优,如对tomcat的JVM、连接器、线程数等,中创中间件的JVM、连接数、日志级别调整,weblogic的JVM、关闭访问日志等。 同时包括数据库连接池的调优,Apache集群、oracle参数...
主要包括:java内存结构、堆内存的构成、堆内存参数调整、垃圾收集算法、垃圾收集器选择、JVM参数、java对象的内存分配过程、Tomcat调优并使用Jmeter评测、参考资料等。希望对大家学习jvm有帮助。
1、Tomcat 的缺省端口是多少,怎么修改? 2、tomcat 有哪几种 Connector 运行模式(优化)? 3、Tomcat 有几种部署方式? 4、tomcat 容器是如何创建 servlet 类实例...13.Tomcat 一个请求的完整过程 14.Tomcat 工作模式?
Tomcat6_调优设置内存和连接数 Tomcat+jndi+配置数据源过程 详细讲解tomcat工作原理 tomcat数据库连接池配置网上文章+csdn上的代码 疯狂的IT人整理Apache、Tomcat集群和负载均衡 Tomcat优化配置
Redis+MongoDB+Memcached/通讯:RabbitMQ+RocketMQ+Kafka)性能优化:Mysql优化+Java性能调优+JVM调优+Tomcat调优 此资源以开发简化版Spring学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案...
文档为自己做性能测试过程中所得经验,是关于TOMCAT、ORACLE、Mosquitto、Linux的参数调优,希望对大家有帮助
此材料是本人学习和开发过程中的一些资料总结,主要是详细总结来了Tomcat服务配置的一些问题。适合Java开发面试者以及Web项目开发初学者学习。
WEB服务器优化之Tomcat7性能调优 JVM概述 Java开发技术之(项目工程的日志管理) 数据库连接池原理详解 Java企业级框架之核心技术(反射) Java-Base64算法(创新_防止表单重复提交) 揭开springAOP神秘面纱之动态代理 ...
PS:网站性能压力测试是性能调优过程中必不可少的一环。只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题。Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网站访问压力测试。...
网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。 性能测试工具目前最常见的有以下几种:ab、http_load、...
│ │ JVM调优实战.doc │ │ Tomcat7优化.docx │ │ 深入理解Java内存模型.pdf │ │ │ └─课后资料 │ ├─笔记 │ │ 淘淘商城_day20_课堂笔记.docx │ │ │ └─视频 │ 07-使用Jedis连接集群操作.avi │ ...
2.1 在Tomcat下Solr安装 13 2.1.1 安装准备 13 2.1.2 安装过程 14 2.1.3 验证安装 15 2.2 中文分词配置 15 2.2.1 mmseg4j 15 2.2.2 paoding 19 2.3 多核(MultiCore)配置 22 2.3.1 MultiCore的配置方法 22 2.3.2 ...
在6年的持续改进过程中,代码、工具、开发、部署等环节都得到了充分的调优,也让AOL.com在当下的数据洪流中屹立不倒。AOL.com工程团队一直保持在25人左右,包括了开发、测试及运维人员,公司的主要工作地点在Dulles...
/ 223 8.4.3 基于栈的解释器执行过程 / 224 8.5 本章小结 / 230 第9章 类加载及执行子系统的案例与实战 / 231 9.1 概述 / 231 9.2 案例分析 / 231 9.2.1 Tomcat:正统的类加载器架构 / 232 9.2.2 OSGi:灵活...
9.2.1 Tomcat:正统的类加载器架构 9.2.2 OSGi:灵活的类加载器架构 9.2.3 字节码生成技术与动态代理的实现 9.2.4 Retrotranslator:跨越JDK版本 9.3 实战:自己动手实现远程执行功能 9.3.1 目标 9.3.2 思路 ...
(这也是Ebean与Hibernatet等ORM的重要区别之一) l 支持基于Object Graph进行自动查询调优 ... by kyo100900 2009-04-07 回复 (7) jspx 一个来自于埃及的java web ... 怎么又冒出一个web框架? 看看现存的Java web...
3、测试方针指导 本次测试的内容是针对《无尽的爱纪念网》网站进行系统架构的性能测试和调优。 测试主要关注点如下: 服务器资源的使用与释放:主要是CPU、内存等; 程序页面数据量的合理分配; 识别系统性能瓶颈;...