WEB服务器调优

jopen 10年前

1.操作系统参数优化:(1)硬件配置尽可能高配;(2)OS选型:Linux/Windows,32位/64位;若使用Linux,注意修改OPEN_FILES为65535,解决应用服务器too many open files 错误。

PS:带宽 等这些都是辅助性的也要考虑。

2.JVM参数优化

-Xmx:初始化堆容量

-Xms:最大堆容量(讲Xmx与Xms值设置相同,可以避免每次gc回收完成后jvm重新分配内存)

-MaxPermSize:(最大方法区容量)

-Xmn:年轻代大小-sun推荐配置为整个堆的3/8)

-Xss:128k,,每个线程的栈大小--每个线程分配的栈容量越大,可以建立的线程数就越少。jdk5.0以后,每个线程栈大小为1M,之前为256k。应当根据实际应用的线程所需大小进行调整。

回收器选择:串行收集器(只适用于小数据量的情况,默认);并行收集器(吞吐量优先);并发收集器(响应时间优先)

JV迷么堆内存的分代:年轻代(Young Generation),年老代(Old Generation)和持久代(Permanent Generation).其中持久代主要存放的是Java类的类信息,与GC收集的Java对象的关系不大。只要年轻代和年老代才对GC有较大影响。

年轻代:新生的对象首先放在年轻代,目标就是尽可能快速的收集掉生命周期短的对象。

年老代:在年轻代中经历了N次(可配置)GC后仍然活着,就会放到年老代中,年老代存放的都是生命周期长的对象。

持久代:存放静态数据,如:Java Class,Method等。

3.Tomcat服务器性能优化:

maxThreads:最大线程数

minSpareThreads:保证最少的工作线程,相当于初始化;

maxSparethreads:最大工作线程,额可以将空线程杀掉从而保持这个线程数

acceptCount:允许排队队列的线程数

4.Nginx反向代理

Nginx是一个轻量级的HTTP服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,特点是占用内存少、并发能力强。借助于Nginx 对静态资源高并发的处理能力来缓解部分Tomcat并发线程的处理,静态资源被分组到Nginx服务器进行处理,不占用Tomcat处理线程池。

5.数据库

6.缓存

7.分布式部署





调优的基本步骤如下: 

1)设置的是Web Server的最大并发用户: 
这个设置是在conf/httpd.conf这个文件里面配置的。在Unix系统中,对应的属性是MaxClient。 
2)设置Web Container的最大、最小并发用户: 
在管理控制台中点击应用程序服务器 > server1 > 线程池 >WebContainer,根据测试性能情况和应用情况输入合适的最小、最大进程数。 
3)对象请求代理(ORB)的线程池大小: 
在管理控制台中点击应用程序服务器 > server1 > ORB 服务 > 线程池,根据测试性能情况和应用情况输入合适的最小、最大进程数。 
4)设置 数据库的连接池 属性: 
JDBC 提供者 >数据库JDBC驱动名称 > 数据源 > 数据源名称> 连接池 ,根据测试性能情况和应用情况输入合适的最小、最大连接数。 
5)JVM堆栈参数设置的性能调优: 
根据硬件物理内存和应用情况输入合适的初始堆大小、最大堆大小。
(XX系统)K值调整针对WAS内存碎片问题IBM建议值:-Xk30000 -Xk24000,2400k (core dump抛出建议值)
6)ORB参数调用方式的性能调优: 
7) 关闭动态加载开关 : 

这个调优的步骤只是涉及了利用WAS服务器参数的调整来优化应用程序的性能,实际上性能的好坏很大部分是取决于应用的设计。系统上线前进行的性能测试也是重要的工作之一。 

Nginx反向代理减轻web应用服务器压力。