WEB服务器调优
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应用服务器压力。