Tomcat运行模式

Tomcat的运行模式有3种。

1.bio模式

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

2.nio模式

利用java的异步io护理技术,noblocking IO技术。要想运行在该模式下,则直接修改server.xml里的Connector节点,修改protocol为如下配置。

protocol="org.apache.coyote.http11.Http11NioProtocol"

重启Tomcat后,就可以生效。

3.apr模式

安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能。此种模式下,必须要安装apr和native,直接启动就支持apr。

如nio修改模式,修改protocol为org.apache.coyote.http11.Http11AprProtocol,如下所示。

protocol="org.apache.coyote.http11.Http11AprProtocol"

Tomcat并发优化

安装APR

[root@binghe ~]# yum -y install apr apr-devel openssl-devel

[root@binghe~]# tar zxvf tomcat-native.tar.gz

[root@binghe~]# cd tomcat-native-1.1.24-src/jni/native[root@binghenative]# ./configure --with-apr=/usr/bin/apr-1-config --with-ssl=/usr/include/openssl/[root@binghenative]# make && make install

安装完成之后 会出现如下提示信息

安装成功后还需要对tomcat设置环境变量,方法是在catalina.sh文件中增加1行:

在这段代码下面添加:

============# OS specific support. $var _must_ be set to eithertrue or false.

cygwin=falsedarwin=false

==============CATALINA_OPTS=”-Djava.library.path=/usr/local/apr/lib”

启动tomcat之后,查看日志,如下所示。

more TOMCAT_HOME/logs/catalina.out2020-04-17 22:34:56org.apache.catalina.core.AprLifecycleListener init

INFO: Loaded APR based Apache Tomcat Native library1.1.31 using APR version 1.3.9.2020-04-17 22:34:56org.apache.catalina.core.AprLifecycleListener init

INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].2020-04-17 22:34:56org.apache.catalina.core.AprLifecycleListener initializeSSL

INFO: OpenSSL successfully initialized (OpenSSL1.0.1e 11 Feb 2013)2020-04-17 22:34:58AM org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler [“http-apr-8080”]2020-04-17 22:34:58AM org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler [“ajp-apr-8009”]2020-04-17 22:34:58AM org.apache.catalina.startup.Catalina load

INFO: Initialization processed in1125 ms

Tomcat优化

1.JVM 调优

在TOMCAT_HOME/bin/catalina.sh 增加如下语句,具体数值视情况而定。添加到上面CATALINA_OPTS的后面即可,如下所示。

JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=512M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m

参数详解

-Xms:JVM初始化堆内存大小。

-Xmx:JVM堆的最大内存。

-Xss:线程栈大小。

-XX:PermSize:JVM非堆区初始内存分配大小。

-XX:MaxPermSize:JVM非堆区最大内存。

建议和注意事项:

-Xms和-Xmx选项设置为相同堆内存分配,以避免在每次GC 后调整堆的大小,堆内存建议占内存的60%~80%;非堆内存是不可回收内存,大小视项目而定;线程栈大小推荐256k。

32G内存配置如下:

JAVA_OPTS=-Xms20480m -Xmx20480m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m

2.关闭DNS反向查询

enableLookups=”false”

3.优化tomcat参数

在server.xml文件中进行如下配置。

protocol=”org.apache.coyote.http11.Http11AprProtocol”

connectionTimeout=”20000″ //链接超时时长

redirectPort=”8443″

maxThreads=”500″//设定处理客户请求的线程的最大数目,决定了服务器可以同时响应客户请求的数,默认200

minSpareThreads=”20″//初始化线程数,最小空闲线程数,默认为10

acceptCount=”1000″ //当所有可以使用的处理请求的线程数都被使用时,可以被放到处理队列中请求数,请求数超过这个数的请求将不予处理,默认100

enableLookups=”false”

URIEncoding=”UTF-8″ />

tomcat如何增大并发_高并发环境下如何优化Tomcat性能相关推荐

  1. java设计模式并发_[高并发Java 七] 并发设计模式

    [高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...

  2. tomcat 请求超时_高并发环境下如何优化Tomcat性能?看完我懂了!

    来自:冰河技术 写在前面 Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢? Tomcat运行 ...

  3. 高并发环境下如何优化Tomcat性能?看完我懂了!

    来自:冰河技术 写在前面 Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢? Tomcat运行 ...

  4. 队列处理高并发_高并发场景下缓存处理的一些思路

    在实际的开发当中,我们经常需要进行磁盘数据的读取和搜索,因此经常会有出现从数据库读取数据的场景出现. 但是当数据访问量次数增大的时候,过多的磁盘读取可能会最终成为整个系统的性能瓶颈,甚至是压垮整个数据 ...

  5. python websocket异步高并发_高并发异步uwsgi+web.py+gevent

    为什么用web.py? python的web框架有很多,比如webpy.flask.bottle等,但是为什么我们选了webpy呢?想了好久,未果,硬要给解释,我想可能原因有两个:第一个是兄弟项目组用 ...

  6. ci mysql高并发_高并发访问mysql时的问题(一):库存超减

    标签: 如果在对某行记录的更新时不采取任何防范措施,在多线程访问时,就容易出现库存为负数的错误. 以下用php.mysql,apache ab工具举例说明: mysql表结构 CREATE TABLE ...

  7. 队列处理高并发_高并发架构消息队列面试题解析

    面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka.ActiveMQ.RabbitMQ.RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: ...

  8. oom 如何避免 高并发_【高并发】高并发环境下如何防止Tomcat内存溢出?看完我懂了!!...

    [高并发]高并发环境下如何防止Tomcat内存溢出?看完我懂了!! 发布时间:2020-04-19 00:47, 浏览次数:126 , 标签: Tomcat 写在前面 随着系统并发量越来越高,Tomc ...

  9. mysql 高并发 响应时间_高并发,你真的了解吗?

    摘要:本文介绍高并发系统的度量指标,讲述高并发系统的设计思路,再梳理高并发的关键技术,最后结合作者的经验做一些延伸探讨. 当前,数字化在给企业带来业务创新,推动企业高速发展的同时,也给企业的IT软件系 ...

  10. mysql高并发和大流量_高并发-高并发和大流量解决方案

    高并发架构相关概念 并发 并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,并且这几个程序都是在同一个处理机上运行,担任一个时刻点上只有一个程序在处理机上运行. 我们所说的 ...

最新文章

  1. tomcat 初始管理用户和密码
  2. 《Revisiting Salient Object Detection! Simultaneous Detection, Ranking, and Subitizing of Multiple Sa
  3. 漫画:为什么程序员喜欢使用 0 ≤ i 10 左闭右开形式写 for 循环?
  4. Spring-data-redis:特性与实例--转载
  5. php 工厂模式封装数据库,PHP设计模式之工厂模式
  6. Java减少依赖_去掉JAVA部分依赖的事例
  7. php 开启imagick,PHP-Imagick:在Imagick项目上设置重力
  8. Storm对DRPC权限控制Version1.0.1
  9. Atitit 短信 技术的概论 短信备份 attilax总结 1.1. 短信的历史 1 1.2. 短信长度 160字的长度限制灵感来自对明信片的研究。明信片。大多数明信片上的字符不超过160个
  10. 【电力负荷预测】基于matlab SVM短期电力负荷预测【含Matlab源码 280期】
  11. maven 命令下载jar包(mvn命令根据依赖下载jar包)
  12. Python学习笔记2
  13. 跟我学Python图像处理丨带你掌握傅里叶变换原理及实现
  14. win10系统下office2003和office2016兼容
  15. 【雅思】【写作】【大作文】Discuss both views and give your own opinion
  16. git使用中遇到的remote:Permission to xxx denied to xxx问题如何解决
  17. 手机呼叫转移怎么设置
  18. SpringBoot更改端口号:Web server failed to start. Port 8081 was already in use.
  19. datatable render formatter
  20. 向未来再出发,云客荣获金鸥奖2021年度企业服务商

热门文章

  1. SQL根据下标,返回split分割后字符串
  2. Windows 7无线路由器解决
  3. Linux命令大全:grep命令
  4. Some normal compiling and debugging commands for C# 常见C#调试和编译命令
  5. 40.Linux/Unix 系统编程手册(下) -- 登录记账
  6. 华为平板鸿蒙评测,华为平板首发鸿蒙系统,Matepad Pro2 跑分首曝
  7. maven私服nexus-bundle的安装和启动
  8. centos7.3上安装oracle xe 11g
  9. IDEA导入eclipse项目并部署到tomcat
  10. rabbitmq - (消息队列) 的基本原理介绍