• Tomcat 7.x/8.x 优化


    一、优化Connector
    http://www.aikaiyuan.com/8466.html

    tomcat的运行模式有3种

    1)bio

    默认的模式,性能非常低下,没有经过任何优化处理和支持.

    2)nio

    利用java的异步io护理技术,noblocking IO技术.

    想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为

    protocol="org.apache.coyote.http11.Http11NioProtocol"
    启动后,就可以生效。
    ( http://www.365mini.com/page/tomcat-connector-mode.htm )
    3)apr

    安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.

    二、Apache Tomcat 8 WebSocket How-To 中文翻译版
    http://blog.csdn.net/hills/article/details/39368951

    Java WebSocket 1.0 规范要求在一个不同的线程上执行到发起写入的线程的异步写入回调。
    由于容器线程池不是通过Servlet API被暴露,因此WebSocket实现必须提供自己的线程池。该线程池可以通过下列servlet context初始化参数被控制:

    org.apache.tomcat.websocket.executorCoreSize: executor线程池的核心大小。如果不设置,则默认为0。
    org.apache.tomcat.websocket.executorMaxSize:executor线程池所允许的最大值。如果不设置,则默认为200。
    org.apache.tomcat.websocket.executorKeepAliveTimeSeconds:executor线程池中空闲进程所保留的最大时间。如果未指定,则默认为60秒。

    设置方法:
    web.xml中

    <!--websocket executor 线程池的核心容量大小 -->
    <context-param>
    <param-name>org.apache.tomcat.websocket.executorCoreSize</param-name>
    <param-value>200</param-value>
    </context-param>
    <!--websocket executor 线程池的最大容量大小 -->
    <context-param>
    <param-name>org.apache.tomcat.websocket.executorMaxSize</param-name>
    <param-value>1000</param-value>
    </context-param>

    三、设置最大线程数
    apache-tomcat-7.0.73confserver.xml

    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />


    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="1000" minSpareThreads="4"/>
    
    <Connector executor="tomcatThreadPool"
    port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />


    参考 :
    http://stackoverflow.com/questions/24889113/websocket-allows-only-200-connections
    http://hongjiang.info/tomcat-connector-tuning-2/

    四、自带的CharacterEncodingFilter 设置编码 解决乱码问题
    见apache-tomcat-7.0.73confweb.xml

    <!-- A filter that sets character encoding that is used to decode -->
    <!-- parameters in a POST request -->
    <filter>
    <filter-name>setCharacterEncodingFilter</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <async-supported>true</async-supported>
    </filter>

    最后:吐个槽 :)

  • 相关阅读:
    用make编译openCV报错:ts_gtest.cpp:(.text._ZN7testing8internal2RED2Ev+0xf): undefined reference to 'regfreeA'
    Makefile:160: recipe for target 'all' failed (Ubuntu 16.06 + Opencv3.2)解决办法
    Linux常用命令汇总
    深度图像检测算法总结与对比(4)
    深度图像检测算法总结与对比(3)
    深度图像检测算法总结与对比(2)
    深度图像检测算法总结与对比(1)
    Caffe SSD的resize过程解析
    caffe 生成检测框并绘图
    Caffe中deploy.prototxt 和 train_val.prototxt 区别
  • 原文地址:https://www.cnblogs.com/lyhero11/p/6124271.html
Copyright © 2020-2023  润新知