关于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。
关于tomcat8在windows2008下高并发下问题的解决方案的更多相关文章
- php结合redis实现高并发下的抢购、秒杀功能
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...
- 高并发下MySQL出现checking permissions
在某些数据访问层框架中,会使用show full tables from test like 'demo',来检查数据库的状态.当数据库中表的数量较少时,并没有出现严重的问题.但是当数据库中的表数量多 ...
- EF+MySQL乐观锁控制电商并发下单扣减库存,在高并发下的问题
下订单减库存的方式 现在,连农村的大姐都会用手机上淘宝购物了,相信电商对大家已经非常熟悉了,如果熟悉电商开发的同学,就知道在买家下单购买商品的时候,是需要扣减库存的,当然有2种扣减库存的方式, 一种是 ...
- (高级篇)php结合redis实现高并发下的抢购、秒杀功能
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...
- php结合redis实现高并发下的抢购、秒杀功能 (转载)
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易想到 ...
- php 高并发下 秒杀处理思路
1.用额外的单进程处理一个队列,下单请求放到队列里,一个个处理,就不会有并发的问题了,但是要额外的后台进程以及延迟问题,不予考虑. 2.数据库乐观锁,大致的意思是先查询库存,然后立马将库存+1,然后订 ...
- PHP开发中多种方案实现高并发下的抢购、秒杀功能
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易想到 ...
- Random在高并发下的缺陷以及JUC对其的优化
Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了.但并不是每个人都知道Ra ...
- redis实现高并发下的抢购/秒杀功能
之前写过一篇文章,高并发的解决思路(点此进入查看),今天再次抽空整理下实际场景中的具体代码逻辑实现吧:抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢 ...
随机推荐
- 【jqGrid for ASP.NET MVC Documentation】.学习笔记.2.jqGrid Model-View-Controller 分离
1 基本 分离代码 和 描述 ,在ASP.NET MVC 应用程序中是非常重要的.因此,jqGrid 的 mvc 模式使用一个共同的网格安装设置,包括 Model ,Controller 和 View ...
- PHP中Redis替代文件存储Session语句
php默认使用文件存储session,如果并发量大,效率非常低.而Redis对高并发的支持非常好,所以,可以使用redis替代文件存储session. 这里,介绍下php的 session_set_s ...
- Eclipse如何设置字体
Eclipse 是一个开放源代码的.基于Java的可扩展开发平台,是学习java和开发java最常用的IDE之一.有时候会遇到这种情况,刚刚下载了新的Eclipse,字体显示英文没问题,但是显示中文就 ...
- 11、Jsp加强/EL表达式/jsp标签
1 Jsp基础回顾 Jsp基础 1)Jsp的执行过程 tomcat服务器完成:jsp文件->翻译成java文件->编译成class字节码文件-> 构造类对象-> 调用方法 to ...
- char 型变量中能不能存贮一个中文汉字,为什么?
char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char类型占2个字节(16比特),所以放一个 ...
- javascript 中==和===的区别
对于JavaScript中比较运算符,可能大家用的比较多的是“==”.对于“===”很多人可能很陌生.=== 表示恒等,首先比较两边的变量数据类型是否相等,其次比较两边的变量的数值是否相等:= ...
- 更改printk打印级别
1.查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4 4 1 7 其中第一个"4"表示内核打印函数printk的打印级别,只有 ...
- js笔记---封装一般运动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Unity-Animator深入系列---Foot IK
回到 Animator深入系列总目录 最近在做一个demo,遇到了角色跑动不自然的问题(注意双腿): 后来得知勾选FootIK之后Unity会智能修复这类问题: 好像这个功能还能做到斜面地形匹配,不过 ...
- no branch 问题
现象如下: lynn.feng:~/project/Git/M_MT6737_MP$ git branch -a* (no branch) a36_panasonic_l004 b36_panason ...