应用部署优化方案分享( 五 )

  • balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
    • Tomcat优化分享
    1.内存优化
    内存优化主要是对启动参数优化,启动脚本 catalina.sh 中设置 JAVA_OPTS 参数
    JAVA_OPTS参数说明:
    -server 启用jdk 的 server 版
    -Xms java虚拟机初始化时的最小内存
    -Xmx java虚拟机可使用的最大内存
    -XX: PermSize 内存永久保留区域
    -XX:MaxPermSize 内存最大永久保留区域
    配置示例:
    JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’
    说明:其内存的配置需要根据服务器(或虚拟机)的实际内存来配置;重启tomcat生效 。
    2.线程优化
    修改server.xml配置文件:
    maxThreads = “500”
    //最大线程数,默认200,没有最理想的值,需要不断调整、优化,道道最合理的配置
    //当系统需要大量计算时,响应时间取决于cup运算能力,此时maxThreads尽量设小,降低同一时间内争抢cup的线程数
    //当系统主要是I/O或操作数据库时,响应时间取决于外部资源等待,此时maxThreads尽量设大,提高同时处理请求的个数
    minSpareThreads=“50“ //初始化时创建的线程数,默认值为4
    maxSpareThreads="500“ //一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程
    acceptCount=“500”
    //当所有处理的线程都正在使用时,在队列中排队请求的最大数目,默认值为10,
    //超出队列数,任何请求都会被拒绝一般设置跟maxThreads一样大,
    //这个值应该是主要根据应用的访问峰值与平均值来权衡配置的
    3.其他常用优化
    maxPostSize=“-1” //POST请求数据大小限制,默认2M,tomcat-7.0.63之前设置为”0”表示不限制,7.0.63版本之后,设置为负数,表示不显示
    connectionTimeout=“20000” //设置连接超时时间毫秒值
    maxHttpHeaderSize=“8192” //HTTP请求和响应头的最大量,以字节为单位,默认值为4096字节
    URIEncoding=“UTF-8“ //Tomcat中配置URIEncoding=”UTF-8”来进行中文的处理
    enableLookups=“false” //如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址,为了提高处理能力,应设置为 false
    3.优化案例分析
    上面章节介绍了架构演变、数据库及相关组件部署优化、Tomcat应用优化等内容,本章节以实际架构案例分析,讲解上述内容在实际架构中的应用 。
    应用部署优化方案分享

    文章插图
     
    案例架构采用典型的分层服务架构(三层),即接入层、应用层和数据层,所有应用服务均使用集群部署,保证服务的高可用性 。
    数据层:
    案例系统中,数据读取业务偏多,故考虑使用使用mycat做读写分离,两台数据库同时对外提供读取业务,其中一台主服务器提供写入操作,当master节点宕机之后,mycat组件检测到服务状态,并将读写能力全部切换至slave节点,保证系统的运行
    Mycat组件进行读写分离和故障切换,所有应用服务连接keepalived对外提供的虚拟ip进行数据库操作,Mycat本身也是一个高可用集群架构 。
    应用层:
    内网负责均衡服务除了可以负载业务的请求之外,还将DMZ区与内网隔离,避免代理服务器直接请求内网应用,负载均衡Nginx使用时,应当根据集群中服务器的性能、部署服务等,合理进行权重分配 。
    公共组件应用服务器将组件服务通过分布式系统发布,供其他业务系统使用;也可为移动端提供公共服务组件 。
    应用集群服务器可能存在文件上传业务,当文件上传至服务器后,注意集群之间的数据同步问题 。
    接入层:
    DMZ区:为了解决外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区 。由于DMZ区的特殊性,与Internet相比,DMZ可以提供更高的安全性,但是其安全性比内部网络低,所以在部署时,特别注意网络上的连通性关系 。
    DMZ区左侧代理服务器主要负责代理推送和设备管理服务对互联网的请求,用户也可直接通过互联网访问到该代理集群服务器,可以用作内部自建应用市场等互联网服务;DMZ区右侧代理服务器主要通过安全网关通道将业务请求代理至内网,安全网关只对其白名单中的服务器和端口进行开放 。
    *1.注意图中①②③④标注位置的网络开通


    推荐阅读