在单数据库,单计算机服务下随着用户的增加,随之而来的会出现很多问题,诸如连接、jvm空间不足等等,这些问题带来的后果就是性能大打折扣,客户投诉。当然处理办法有多种,比如添加服务,做负载均衡,添加缓存服务,动静分离等等。这里我们只谈谈对服务器(tomcat)和数据库(mysql)的优化。
-
tomcat相关
我们在做大数据测试时常常会碰到这样一类错误:outofmemoryerror:java heap space
这类问题出现的原因就是jvm的堆内存已满,导致内存溢出。解决这类问题首先要查的还是程序,看是否有死循环之类的bug问题,还有就是增加jvm的堆内存。这个配置需要在tomcat的bin目录下的catalina.bat文件中设置。编辑这个文件,在文件的rem -----------------------------------------------------------------和rem Guess CATALINA_HOME if not defined之间插入:set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m,这里做下介绍 -Xms(JVM初始化堆的大小 不要超过物理内存的80%
),-Xmx(JVM堆的最大值 不要超过物理内存的80%
),-XX:PermSize(jvm非堆内存初始值 默认是物理内存的1/64),XX:MaxPermSize(jvm非堆内存最大值 默认是物理内存的1/4)
熟悉IO与NIO的都知道,他们的区别和对性能的影响,这里就不多说了,其实tomcat是支持java NIO特性的,只不过默认情况下并未开启该功能,比如我们在未配置过的tomcat中常常会发现如下的配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
而且启动时你会发现如下信息
2012-10-26 18:14:07 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2012-10-26 18:14:07 org.apache.catalina.startup.Catalina load
以下便是开启tomcatNIO特性
<Connector URIEncoding="UTF-8"
acceptCount="1000"
connectionTimeout="20000" port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectPort="8443"/>
在tomcat启动时创建线程池,解决tomcat在获取请求时候创建线程的压力消耗,从而提升tomcat处理能力
在tomcat的server.xml文件中添加如下线程池声明
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="1000"
minSpareThreads="300" />
相关参数说明
name:线程池的名称
namePrefix:线程池的前缀
maxThread:最大线程数
minSpareThreads:初始化线程数
声明完线程池后,接着就使用该线程池,在tomcat的server.xml的连接器中配置该线程池,效果如下
<Connector executor="tomcatThreadPool"
URIEncoding="UTF-8"
acceptCount="1000"
connectionTimeout="20000"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectPort="8443"/>
分享到:
相关推荐
课程内容包括了JVM性能调优专题,Tomcat性能优化实战,MySQL深度优化,并发编程,源码框架专题,分布式缓存技术Redis,分布式协调任务ZooKeeper,分布式协调任务ZooKeeper,Kafka mongodb sharding-sphere,Netty...
Tomcat7性能优化调优Tomcat7性能优化调优Tomcat7性能优化调优
采用MySQL作为主要数据库,并且通过索引和查询优化技术实现系统的高性能和稳定性。 开发了用户友好的界面,利用JSP技术实现了数据的动态展示和交互功能,大大提升了用户体验。 实现了信息管理系统的增删改的功能,...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
performance_schema:自MySQL 5.5版本引入,用于收集服务器性能数据,帮助诊断和优化系统性能。 test(非必要):默认提供的测试数据库,通常用于学习和实验,生产环境中可考虑删除。 sys(自MySQL 5.7版本):...
1 什么是性能优化\ 2 性能测试与优化\ 3 性能优化JVM篇\ 4 性能优化Tomcat篇\ 5 性能优化mysql篇\
redis集群jvm调优实战MySQL5.6性能优化&Tomcat7优化
MySQL性能优化的21个最佳实践 Spring面试专题及答案整理文档 一线互联网企业面试题(仅参考未整理答案) 分布式数据库面试专题系列:Memcached+Redis+MongoDB 分布式通讯面试专题系列:ActiveMQ+RabbitMQ+Kafka ...
包含完整的源码 文档和说明 可以稍微改动成为你的个人作品 作为学习JSP和数据库的资料
BAT面试常问80题 docker学习思维笔记.xmind Dubbo Dubbo服务框架面试专题及答案整理文档 Git基础.xmind Java并发体系学习思维笔记.xmind java筑基(基础)面试专题系列(一):...MySQL性能优化的21个最佳实践 Redis
1 什么是性能优化\ 2 性能测试与优化\ 3 性能优化JVM篇\ 4 性能优化Tomcat篇\ 5 性能优化mysql篇\
Nignx+Zookeeper/缓存:Redis+MongoDB+Memcached/通讯:RabbitMQ+RocketMQ+Kafka)性能优化:Mysql优化+Java性能调优+JVM调优+Tomcat调 二、分布式对象技术有三大流派 目前国际上,分布式对象技术有三大流派
MySQL性能优化的21个最佳实践 JVM与性能优化知识点整理 java筑基(一):Tomcat+Mysql+设计模式 java筑基(二):并发+Netty+JVM Java架构面试专题及架构学习笔记 Dubbo服务框架面试专题及答案整理文档 BAT面试常问...
并发+Netty+JVM、java筑基(基础)面试专题系列(一):Tomcat+Mysql+设计模式、JVM与性能优化知识点整理、MySQL性能优化的21个最佳实践、MYSQL、redis、spring、多线程、分布式、面试必备之乐观锁与悲观锁、面试必...
mysql 的管理系统,java开发,基于tomcat6.0+ 使用非常方便,并可以根据你的业务需要生成优化后的mysql配置文件,并且不需要重启mysql,非常不错~~~
MySQL性能优化的21个最佳实践 Netty面试专题及答案 Nginx面试专题及答案 RabbitMQ消息中间件面试专题及答案 redis面试题及答案(上) Redis面试专题及答案(下) SpringBoot面试专题及答案 SpringCloud面试专题及...
(serlvet+jsp+mysql) 框架:jsp+servlet+mysql+tomcat+layui+jquery+ajax 1.学生:考勤管理,请假,选课,查询成绩,修改个人信息等2.教师:考勤管理,请假审核等,选课信息管理,学生信息管理 MySQL 是一款广受...
1.3、Mysql性能优化整理 二、微服务架构面试专栏 2.1、SpringCloud面试整理 2.2、SpringBoot面试整理 2.3、Dubbo面试整理 三、并发编程高级面试专栏 四、开源框架面试题专栏 4.1、Spring面试整理 4.2、SpringMVC面试...
tomcat性能优化整理 jvm性能优化整理 mysql性能优化 springcloud面试整理 springboot面试整理