`
andy54321
  • 浏览: 441461 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

我在linux系统下web系统、tomcat6、jdk1.6所做的优化-并发,希望和大家讨论

    博客分类:
  • WEB
阅读更多
在部署系统后,为了增加系统并发量,系统响应速度,做了一些工作;但是有些概念也不是很清楚,遂整理如下,希望各位大虾们可以指点一二。
本人使用jdk6.0、tomcat6.0
1、 修改tomcat server.xml参数设置
<Connector port="80" protocol="HTTP/1.1"
               maxHttpHeaderSize="8192"
               maxThreads="1000" minSpareThreads="75" maxSpareThreads="300"
               enableLookups="false" redirectPort="8443" acceptCount="200"
               connectionTimeout="50000" disableUploadTimeout="true"/>

主要修改了maxThreads、acceptCount。
引用
Google资料说“如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。”

2、 增加tomcat启动初始内存设置;catalina.sh – 增加了参数内存设置
增加设置
JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xss128k -XX:+AggressiveOpts -XX:+UseParallelGC  -XX:+UseBiasedLocking"

增加了JVM初始分配的内存
资料:
引用
Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同
堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
JVM内存限制(最大值)
首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

3、 响应处理的servlet在系统启动时进行初始化,修改servlet load-on-strartup数值,可设0、1、2、3,值小的先初始化;
4、 修改linux系统资源数目的限制
a) ulimit -a 查看系统目前资源限制的设定。-- 可以看到默认1024
b) 大家可以看看这个帖子http://www.iteye.com/topic/65175
c)
我的修改方法是在文件/etc/security/limits.conf中增加行* - nofile 57766

5、 更改oracle连接数最大值,这个可找对应DBA搞定;
6、 上面是开始后做的操作,后来又使用了tomcat5.5 、 tomcat6中提供的连接池功能
Server.xml
   
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
       maxThreads="1000" minSpareThreads="75" maxSpareThreads="300"  acceptCount="200"/>
	<Connector executor="tomcatThreadPool"
               port="80" protocol="HTTP/1.1" 
               connectionTimeout="30000" 
               redirectPort="8443" />


以上是我所做的配置,有不合理或者还未做到的优化操作,还希望能够提出来;
对系统的并发其实还是有很多不理解的地方,欢迎讨论。
谢谢。
分享到:
评论
7 楼 sdh5724 2008-12-24  
-server纯粹是内纯行为, SERVER是不需要关心整个系统内存的. 因此,  -server是必要的.
6 楼 xuyao 2008-12-24  
JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xss128k -XX:+AggressiveOpts -XX:+UseParallelGC  -XX:+UseBiasedLocking"
这个是不是有问题,虽然32位系统寻址空间4G,但是记得虚拟机最多1.4左右,不是越大越好,GC的时间也会很长,新区和老区,永久区要有一定比例,另外,原来看过一篇文章,说不用一定要加-server模式,加了未必性能一定有提高,你测试结果如何?
5 楼 sdh5724 2008-12-24  
valibo 写道
问 sdh5724 兄:
   一个web 应用开发完成后,怎么测试

   要用到什么软件或者工具吗

   可不可以推荐几个。。。。

   我现在的系统运行有点慢 但是就是找不到导致慢的原因所在
  
   大家有什么好的方法呢?


有一些监控的工具, 比如introscope等, 这个是用在生产环境的。
QA一般采用loadrunner, jmeter来测试压力情况,
我比较土, 一般我只是用kill -3来看栈的情况。另外, 我在业务层加上了性能拦截的AOP, 把性能执行的部分信息写到了日志里。


4 楼 sdh5724 2008-12-24  
andy54321 写道
机器配置:
两台至强;
2.4GHz,4G内存;

对并发、单位时间内比如1分钟内处理几万个请求是比较要求的;


建议你看看, 是不是在高峰的时候把线程用完了。对于web服务器, 1000个THREAD干活很恐怖的, 实际上apache到了1000个连接都已经很恐怖了。

3 楼 valibo 2008-12-24  
问 sdh5724 兄:
   一个web 应用开发完成后,怎么测试

   要用到什么软件或者工具吗

   可不可以推荐几个。。。。

   我现在的系统运行有点慢 但是就是找不到导致慢的原因所在
  
   大家有什么好的方法呢?
2 楼 andy54321 2008-12-24  
机器配置:
两台至强;
2.4GHz,4G内存;

对并发、单位时间内比如1分钟内处理几万个请求是比较要求的;
1 楼 sdh5724 2008-12-23  
兄弟, 研究的不错, 但是细节上, 还需要深入, 有些参数配置的过于粗糙。
1。 tomcat的线程数量有待商榷。 thread太多,导致切换过多,性能下降严重。这个数量应该是你单个机器的承载能力, 压力测试下得出的结果。 不可任意加大。一般情况下, 256-512个已经非常高的数值了。
2。JVM参数配置, 你这个会导致严重的stop world时间。 如果你想应用响应平缓, 一般看你的应用对于临时内存的需求, 一般来说, -Xmn128-256m就够了, 这个要看你的停顿时间的计算, 你把gc的收集打印出来,再研究下, 最大停顿时间。 这个我的BLOG说的比较详细。 你去看看吧。
3。 -Xss128k 这个参数, 建议你设置成256k, 不然容易造成不够用, 特别是你的程序有比较多的递归行为。 比如排序。
4。 另外如果想提高内存的性能, 你可以看看大内存设置.不是很好操作, 我没有测试过。
5。 在性能提升上, 我建议你使用Linux kernel 2.6.22+版本, JAVA6 是不是32位的不是很要紧。这个提升是非常大的。

32位上, 你对JAVA能配置的内存理解是错误的。 一般来说1。5G的配置, 都可能导致JVM进程出问题, 这个测试我做过, 一般高压力运行2-3天后, JVM会CRASH, 我不是很明白为什么, 有可能JAVA5在CMS的问题导致的。一般建议在32位下配置内存为1280m.


相关推荐

    tomcat7,正常,可用,需要jdk1.6版本

    【标题】"Tomcat7, 正常, 可用, 需要JDK1.6版本" 暗示了我们讨论的核心是Apache Tomcat服务器的第七个主要版本,一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用服务规范。此版本的Tomcat被认为稳定...

    jdk1.6 1.6版本jdk

    综上所述,JDK 1.6和Apache Tomcat 6.0.20组合为Java开发者提供了一个强大的开发和运行环境,尤其适合开发和部署基于Java EE 5标准的Web应用程序。这些组件至今仍被许多遗留系统所使用,尽管最新的JDK版本已经发布,...

    LINUX6.1 64bit Tomcat6.0安装手ce

    Linux 6.1 64位系统上的Tomcat 6.0安装手册旨在提供详细的步骤,帮助用户在基于Linux的环境中成功安装和配置Apache Tomcat服务器。Tomcat是一款开源的Java Servlet容器,常用于部署Java Web应用程序。以下是安装过程...

    Linux下Apache+Tomcat集群指南

    ### Linux下Apache+Tomcat集群指南 #### 一、系统集群环境...通过上述步骤和注意事项,您可以在Linux环境下成功搭建一个Apache+Tomcat集群,并实现负载均衡和Session复制等功能,从而显著提升Web应用的性能和稳定性。

    Linux_Apache+Tomcat+jk

    ### Linux环境下Apache+Tomcat+JK集群配置详解 #### 一、集群基础知识 集群技术是提升系统服务能力和高可用性的关键技术之一。通过将多台独立的服务器组织成一个集群,可以实现故障无缝迁移,即当集群中某台服务器...

    apach2+tomcat 负载均衡

    tar -xvf jdk-6u18-linux-i586.bin ``` - 设置环境变量: ```bash vi /etc/profile ``` 添加以下内容: ```bash export JAVA_HOME=/path/to/jdk export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/...

    Java开发平台最新开发软件下载地址全集(2009.1)

    根据给定文件的信息,我们可以总结出以下相关的IT知识点: ### 1. JDK 1.6 (Java Development Kit) - **版本**: JDK 1.6 ...b03/jdk-6u11-windows-i586-p.exe&File=jdk-6u11-windows-i586-p.exe]...

    java-Tomcat

    2. **JDK兼容性**:确保系统中安装的JDK版本在1.6或以上,因为Tomcat 7不支持更低版本的JDK。 3. **部署应用**:将Web应用程序(WAR文件或解压后的目录)放在Tomcat的webapps目录下,Tomcat会自动检测并部署应用。 ...

    Linux系统中Apache服务器的配置与管理.pdf

    首先,我们需要在Linux系统上安装Java Development Kit (JDK) 1.6或以上版本。可以通过下载JDK的二进制包到指定目录,例如"/tmp/",然后使用"chmod"命令赋予执行权限,最后运行安装程序。安装完成后,需要配置系统...

    通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔.docx

    在JVM优化方面,对于Oracle Sun的JDK 1.6及以上版本,可以使用特定的启动参数来提高Tomcat的性能。这些参数包括: 1. `-server`:指定使用服务器模式的JVM,更适合长时间运行的应用。 2. `-Xms` 和 `-Xmx`:分别设置...

    Tomcat负载均衡配置

    在Linux服务器上,首先需要下载并安装JDK1.6,然后通过修改`/etc/profile`文件来配置环境变量。添加`JAVA_HOME`, `JRE_HOME`, `PATH`和`CLASSPATH`的路径,之后运行`source /etc/profile`使配置生效。确认版本正确...

    搭建符合自己实际需求的web生产环境之java篇.pdf

    - **JDK版本**:选用与开发环境相同的JDK 1.6版本,以确保兼容性和一致性。 - **Nginx版本**:采用Nginx 1.2.5版本,该版本经过验证稳定可靠。 - **Tomcat版本**:选用Tomcat 7版本,同样是为了与开发环境保持一致。...

    致远OA A8-V5协同管理软件 V5.1安装维护手册

    - 在Linux操作系统下安装A8-V5系统。 **2.8 安装日志** - 记录了安装过程中产生的日志信息,用于调试和故障排查。 **2.9 系统预置的用户** - 系统默认包含了一些预置的用户账号,便于管理员快速上手。 **2.10 ...

    Tomcat性能调优

    ### Tomcat性能调优 ...- **解决静态化乱码问题**:在Linux环境下,确保静态资源的编码正确无误。 通过综合运用这些技术和策略,可以显著提高Tomcat服务器的性能和稳定性,为用户提供更好的体验。

    tomcat 7.0配置

    在开始安装和配置Tomcat 7.0之前,需要确保系统中已经安装了Java Development Kit (JDK)。Tomcat 7.0最低支持JDK 1.6版本。此外,还需要下载Tomcat 7.0的压缩包或者安装包,并准备好一个合适的安装目录。 #### 三、...

    ubuntu16.4部署需要的文件

    在Ubuntu上安装JDK 1.6时,由于Ubuntu 16.4默认可能没有提供该版本的官方仓库,我们可能需要通过Oracle官网下载JDK 1.6的Linux版本,并手动解压到系统指定目录,如 `/usr/lib/jvm`,然后设置环境变量 `JAVA_HOME` ...

    tongweb6.0使用手册

    - **高性能**:优化的内存管理和高效的线程调度机制,确保高并发环境下的稳定运行。 - **高可用性**:支持集群部署,提供负载均衡和故障转移功能。 - **易用性**:简化了安装配置流程,提供图形化的管理界面。 - **...

    ASP.NET网上书店的需求分析

    项目建议使用Windows XP SP2进行开发和测试,开发软件包括Borland JBuilder2005、Tomcat5.0、SQL Server2000、JDK1.5,建模工具为IBM rational rose 2003企业版。 1.5 功能要求: - 图书信息和用户信息管理:包括...

Global site tag (gtag.js) - Google Analytics