设为首页 收藏本站
查看: 1655|回复: 1

[经验分享] Apache和Tomcat结合提高性能优化

[复制链接]

尚未签到

发表于 2018-12-8 07:24:17 | 显示全部楼层 |阅读模式
  研究了Apache 和Tomcat做负载均衡,系统正式上线后就需要考虑如果对Apache和Tomcat进行性能优化,以便能够充分发挥硬件和软件的处理能力。
  Apache Http Server:
  影响性能的最核心特性:MPM(Multi-Processing Modules,多道处理模块):
  进入httpd-2.0.45目录,运行以下代码:
  

  
$ ./configure --help|grep mpm
  

  显示如下:
  

  
--with-mpm=MPM
  
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意味着无限,即子进程永不销毁。
  

  

  StartServers, MinSpareServers, MaxSpareServers, MaxClients指令用于调节父进程如何产生子进程.
  MaxClients: 设定的是Apache可以同时处理的请求数,默认值是256。若要提高最大请求数,需要添加ServerLimit数,ServerLimit最大支持 20000,注意:ServerLimit需要放置于MaxClient前面.一般设置小于MaxClients。
  MaxRequestsPerChild指令控制服务器杀死旧进程产生新进程的频率。
  MaxSpareServers指令设置空闲子进程的最大数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。
  MinSpareServers指令设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。
  Tomcat性能优化:
  1 JVM内存调整
  当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。
  -Xms 表示JVM初始化堆的大小,-Xmx表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。
  说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。
  PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
  
-XX:PermSize=512MB 最小尺寸,初始分配
  
-XX:MaxPermSize=512MB 最大允许分配尺寸,按需分配
  在Tomcat安装目录下的bin/catalina.sh文件下添加
  JAVA_OPTS="-Xmx2048M -Xms1024M -XX:PermSize=512M -XX:MaxPermSize=512M"; 设置了初始堆大小为2014M,最大值为2048M。永久保存区域初始大小512M,最大允许分配尺寸512内存。
  

  2 禁用DNS查询:
  

  
Set to true if you want calls to request.getRemoteHost() to perform DNS lookups in order to return the actual host name of the remote client. Set to false to skip the DNS lookup and return the IP address in String form instead (thereby improving performance). By default, DNS lookups are enabled.
  

  Server.xml中的Connector 节点中进行设置:修改server.xml文件中的enableLookups参数值为false
  3 调整线程数
  Server.xml中的Connector 节点中进行设置如下:
  minProcessors 服务器启动时创建的处理请求的线程数
  maxProcessors 最大可以创建的处理请求的线程数
  maxThreads:这个值表示Tomcat可创建的最大的线程数。 默认为200;If not specified, this attribute is set to 200。
  acceptCount :指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。The default value is 100
  connnectionTimeout 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
  minSpareThreads Tomcat初始化时创建的线程数。 If not specified, the default of 10 is used.
  maxSpareThreads 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。 (tomcat5以后已删除)
  

  

  总结:
  首先要争取使得操作系统以及网络资源达到最优,并且最好使用高版本的JDK。对于有大量静态页面的系统,采用Apache集成Tomcat的方式,把静 态页面交由Apache处理,动态部分交由Tomcat处理,能极大解放Tomcat的处理能力。通过Apache和Tomcat负载提供稳定高并发的性 能需求。同时需要对Tomcat自身进行优化,包括增大内存、调节并发线程数等。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-644437-1-1.html 上篇帖子: 两种jdk版本的多个tomcat按windows服务的安装问题的解决 下篇帖子: apache+tomcat集群实现负载均衡
累计签到:1953 天
连续签到:49 天
发表于 2019-2-22 09:02:44 | 显示全部楼层
感谢楼主的分享!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表