关于tomcat8在windows2008下高并发下问题的解决方案

因为客户服务器特殊的环境问题,只能使用windows2008r2服务器,然而配置过后,网站的高访问量很快就出现了各种问题,以下是解决的问题汇总。

服务器环境:windows2008R2+jdk8.0+tomcat8.0.21+sqlserver2008r2(以上软件环境均是64位)

1、首先建议安装jdk8.0(64位)以能获取较高的JVM内存设置,不然网站访问并发过高,内存很快就会出现不足,也就是常说的java heap space不足了。下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

记得一定要选择:jdk-8u45-windows-x64.exejdk-8u45-windows-x64.exejdk-8u45-windows-x64.exe

2、安装64位的tomcat8.0,目前最新版本是apache-tomcat-8.0.21,下载地址:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.21/bin/apache-tomcat-8.0.21-windows-x64.zip

3、修改连接器协议,默认是HTTP/1.1,该默认设置不能支持过高的并发量,不然会出现io错误。方法是修改conf/server.xml将<Connector port="8080" protocol="HTTP/1.1"修改为<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"

4、优化jar包,如果一个jar文件出现在多个WEB应用中的话,可以将该jar文件统一放到一个目录下,以 避免被tomcat 多次加载,耗用内存占用。方法是:

修改:/conf/catalina.properties文件

将:

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"后面增加:"${catalina.home}/share/lib/*.jar"

然后将共用的jar文件放到tomcat下share目录里的lib文件夹里即可。

5、tomcat8默认会缓存图片资源,当并发过高时,会提示warn信息: WARNING [http-nio-80-exec-43] org.apache.catalina.webresources.Cache.getResource Unable to add the resource at.....,这个本身没有什么问题,只是不断在日志中写入信息,日志文件不断增加,感觉不好,干脆设置不缓存,方法是:

修改META-INF下的context.xml文件,在Context中增加一行:<Resources cachingAllowed="false"></Resources>

6、设置jvm较大内存,编辑bin/catalina.bat,找到以下代码段:rem Guess CATALINA_HOME if not defined,在其上面增加代码:

set JAVA_OPTS=-Xms512m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m

这里设置的Xmx为4G内存,如果安装的不是64位的JDK,那么在设置最大内存的时候,就会提示不支持(好像最多能设置到1G多点,要知道服务器内存是64G啊,!!!)。所以第一步为什么安装64位的操作系统了。

7、设置tomcat最大并发数,方法:修改conf/server.xml,在Connector下增加以下代码:maxThreads="1000" minSpareThreads="100" maxSpareThreads="300"  acceptCount="100"

以下是我的配置:

<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" maxThreads="1000" minSpareThreads="100" maxSpareThreads="300" acceptCount="100"
redirectPort="8443" URIEncoding="GBK" useBodyEncodingForURI="true" />

因为大多数时候JSP程序都是部署在linux下,没有想到windows下会有这么多问题,以上是经过测试后的时候,网站在高访问量下没有再出问题。另外经过测试在windows服务器下,使用apache+tomcat集成的方法也不好。对于并发的连接数支持还不如纯tomcat。

本文摘抄:http://www.myexception.cn/windows/1906152.html

 
 
 

关于tomcat8在windows2008下高并发下有关问题的解决方案的更多相关文章

  1. 关于tomcat8在windows2008下高并发下问题的解决方案

    因为客户服务器特殊的环境问题,只能使用windows2008r2服务器,然而配置过后,网站的高访问量很快就出现了各种问题,以下是解决的问题汇总. 服务器环境:windows2008R2+jdk8.0+ ...

  2. php结合redis实现高并发下的抢购、秒杀功能

    抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...

  3. 高并发下MySQL出现checking permissions

    在某些数据访问层框架中,会使用show full tables from test like 'demo',来检查数据库的状态.当数据库中表的数量较少时,并没有出现严重的问题.但是当数据库中的表数量多 ...

  4. EF+MySQL乐观锁控制电商并发下单扣减库存,在高并发下的问题

    下订单减库存的方式 现在,连农村的大姐都会用手机上淘宝购物了,相信电商对大家已经非常熟悉了,如果熟悉电商开发的同学,就知道在买家下单购买商品的时候,是需要扣减库存的,当然有2种扣减库存的方式, 一种是 ...

  5. (高级篇)php结合redis实现高并发下的抢购、秒杀功能

    抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...

  6. php结合redis实现高并发下的抢购、秒杀功能 (转载)

    抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易想到 ...

  7. php 高并发下 秒杀处理思路

    1.用额外的单进程处理一个队列,下单请求放到队列里,一个个处理,就不会有并发的问题了,但是要额外的后台进程以及延迟问题,不予考虑. 2.数据库乐观锁,大致的意思是先查询库存,然后立马将库存+1,然后订 ...

  8. PHP开发中多种方案实现高并发下的抢购、秒杀功能

    抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易想到 ...

  9. Random在高并发下的缺陷以及JUC对其的优化

    Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了.但并不是每个人都知道Ra ...

  10. redis实现高并发下的抢购/秒杀功能

    之前写过一篇文章,高并发的解决思路(点此进入查看),今天再次抽空整理下实际场景中的具体代码逻辑实现吧:抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢 ...

随机推荐

  1. CPU密集型和IO密集型(判断最大核心线程的最大线程数)

    CPU密集型和IO密集型(判断最大核心线程的最大线程数) CPU密集型 1.CPU密集型获取电脑CPU的最大核数,几核,最大线程数就是几Runtime.getRuntime().availablePr ...

  2. Elasticsearch: Join数据类型

    在Elasticsearch中,Join可以让我们创建parent/child关系.Elasticsearch不是一个RDMS.通常join数据类型尽量不要使用,除非不得已.那么Elasticsear ...

  3. Python 类型提示简介

    Python 3.6+ 版本加入了对"类型提示"的支持. 这些"类型提示"是一种新的语法(在 Python 3.6 版本加入)用来声明一个变量的类型. 通过声明 ...

  4. DML添加数据-删除数据-修改数据

    DML添加数据 语法 insert into 表名(列名1,列名2,列名n) values(值1,值2,值n) 列:INSERT INTO day02(id,NAME,age) VALUES(1,&q ...

  5. WSL 2 上启用微软官方支持的 systemd

    以前折腾了很久的 genie 和 distrod 来实现 wsl2 上的 systemd.现在微软和Canonical联合声明发布了官方支持的systemd,之前的折腾貌似有点浪费时间了.如果微软不发 ...

  6. C#中Math.Round()实现中国式四舍五入问题

    C#中的Math.Round()并不是使用的"四舍五入"法.实际上是四舍六入五取偶. 对于这个问题我们常见的解决方式是使用MidpointRounding.AwayFromZero ...

  7. 2022-08-05-欢迎使用_Typecho

    layout: post cid: 1 title: 欢迎使用 Typecho slug: start date: 2022/08/05 14:21:51 updated: 2022/08/05 14 ...

  8. 多态特征,instanceof关键字和abstract类

    多态 对象有多种状态.作用:提高程序的可扩展性. 一个对象具备多种状态的能力,这个程序是可扩展的. 前提: 必须有层级关系 继承 实现 继承:子类和父类的关系,一个父类可以有多个子类,说明父类的引用有 ...

  9. python学习笔记----必备知识

    一.必备知识 二.流程控制 https://blog.csdn.net/weixin_43304253/article/details/120778228 1.1语法特点: 1.1.1 代码注释 单行 ...

  10. Python学习三天计划-3

    面向对象 一.类的定义 1.类定义 class是关键字,表示要定义类了 类的属性,即定义在类中的变量(成员变量) 类的行为,即定义在类中的函数(成员方法) 2.对象 创建类对象的语法: class S ...