• Tomcat笔记


    总体架构:
    由三部分组成:Service、Connector、Container
    多个Connector对应一个Container,构成一个Service
    为Service提供一个生存环境

    如何处理多用户同时请求
    1、用户浏览器请求
    2、Connector将TCP信息封装,创建Request、response
    3、开启一个线程将TCP信息,Request、Response传给Container容器
    4、Container中的是个容器处理,返回request rsponse给客户端
    5、request response对象生命周期结束,关闭当前Socket

    多级容器如何协调工作:
    略略略略略略

    运用了哪些设计模式:
      门面设计模式:在大的系统中,每个子系统之间要进行互相通信,但内部的数据不能完全暴露给其他子系统,这样就不存在子系统之分了
             于是门面设计模式解决这一问题,他把其他子系统关系的数据暴露出来,构成一个访问门面,供其他子系统访问。
               如:Request Response对象的封装
      观察者设计模式:事件监听机制,如:session状态改变的监听
      任务链设计模式:每个对象对其下家的引用将很多对象串联起来构成一条任务执行链,请求在这条链上传递
                     优点.在不影响用户请求的情况下对这条链增添其他功能,优点想AOP思想
              Container中四大容器的相关联:Engine--->Host--->Context--->Wrapper

    内存优化
    windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入
    set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
    -Xms java虚拟机初始化时的最小内存; 512
      -Xmx java虚拟机可使用的最大内存;1024
      -XX: PermSize 内存永久保留区域:64
      -XX:MaxPermSize 内存最大永久保留区域:128



    线程优化:
    <Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"
    connectionTimeout="20000" redirectPort="8443" />
    maxThreads="600" ///最大线程数
    minSpareThreads="100"///初始化时创建的线程数
    maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
    acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

    禁用DNS查询
    为了避免服务器获取难以的到的用户请求IP浪费时间,
    可修改server.xml中Connector元素,修改属性enableLookups参数值: enableLookups="false"
    如果为true,则可以调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名
    若为false则不进行DNS查询,而是返回其ip地址'

    设置session过期时间
    confweb.xml中通过参数指定:

    <session-config>
    <session-timeout>180</session-timeout>
    </session-config>
    单位为分钟

    缓存优化
    1>参数说明

      compression 打开压缩功能
      compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB
      compressableMimeType 压缩类型
      connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

      2>Tomcat中的配置示例

      <Connector port="9027"
      protocol="HTTP/1.1"
      maxHttpHeaderSize="8192"
      maxThreads="1000"
      minSpareThreads="100"
      maxSpareThreads="1000"
      minProcessors="100"
      maxProcessors="1000"
      enableLookups="false"
      compression="on"
      compressionMinSize="2048"
      compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
      connectionTimeout="20000"
      URIEncoding="utf-8"
      acceptCount="1000"
      redirectPort="8443"
      disableUploadTimeout="true"/>

  • 相关阅读:
    深度学习笔记之关于基本思想、浅层学习、Neural Network和训练过程(三)
    深度学习笔记之关于特征(二)
    深度学习笔记之概述、背景和人脑视觉机理(一)
    初步认识深度学习笔记(一)
    EM(期望最大化)算法初步认识
    Ubuntu16.04下安装Tensorflow GPU版本(图文详解)
    Ubuntu16.04下安装Tensorflow CPU版本(图文详解)
    [转]粤语学习
    [转]微信公众平台开发(十) 消息回复总结
    [转]C#开发微信公众平台-就这么简单
  • 原文地址:https://www.cnblogs.com/huanglufei/p/5878232.html
Copyright © 2020-2023  润新知