【IT168 技术】最近在公司实习,研究了Apache 和Tomcat做负载均衡,系统正式上线后就需要考虑如果对Apache和Tomcat进行性能优化,以便能够充分发挥硬件和软件的处理能力。
Apache Http Server:
影响性能的最核心特性:MPM(Multi-Processing Modules,多道处理模块):
进入httpd-2.0.45目录,运行以下代码:
显示如下:
Choose the process model for Apache to use.
MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool}
上述操作用来选择要使用的进程模型,即哪种MPM模块。prefork就是Unix平台上缺省的MPM。查看Httpd.conf
# StartServers 5
# MinSpareServers 5
# MaxSpareServers 10
# MaxClients 150
# MaxRequestsPerChild 0
ServerLimit 2048 //可配置的进程数的上限
ThreadLimit 64 //设置在每个子进程可配置的线程数上限
StartServers 8 //初始化进程数
MaxClients 2048//设定的是Apache可以同时处理的请求,是最重要的参数
MinSpareThreads 64//最小空闲进程
MaxSpareThreads 256 //最大空闲进程
ThreadsPerChild 64
MaxRequestsPerChild 0 //(默认10000)每个子进程可处理的请求书,每个子进程在处理了“MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。
</IfModule>
StartServers, MinSpareServers, MaxSpareServers, MaxClients指令用于调节父进程如何产生子进程。
MaxClients:设定的是Apache可以同时处理的请求数,默认值是256。若要提高最大请求数,需要添加ServerLimit数,ServerLimit最大支持20000,注意:ServerLimit需要放置于MaxClient前面.一般设置小于MaxClients。
MaxRequestsPerChild指令控制服务器杀死旧进程产生新进程的频率。
MaxSpareServers指令设置空闲子进程的最大数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。
MinSpareServers指令设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。
Tomcat性能优化:
1、JVM内存调整
当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。
-Xms
说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。