Java知识点总结业务场景篇31-32

三十一、Tomcat优化

增大内存(堆,持久代)并开启server模式

我在做XXX项目时,用到了poi导入和导出数据,由于公司的业务比较繁多,数据量很大,测试时报内存溢出,经过我的分析再结合上网查阅资料,发现可能是tomcat内存不足,需要增大,修改配置文件后测试不再报错.

tomcat增大内存的方式通过修改tomcat配置文件

window下, 在bin/catalina.bat文件中最前面添加:

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m –Xms1024m -Xmx1024m

linux下,在catalina.sh最前面增加:

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m –Xms1024m -Xmx1024m "

-client –service

当我们在cmd中运行-java时,黑窗口会出现-client -service这两参数.其作用是设置虚拟机运行模式;client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。server模式启动比client慢,但可获得更高的运行性能。Windows默认为client,如果要使用server模式,就需要在启动虚拟机时加-server参数,以获得更高性能,对服务器端应用,推荐采用server模式,尤其是多个CPU的系统。在Linux,Solaris上,默认值为server模式.

JDK版本

影响虚拟机还有JDK的版本,JDK分为32位,64位两种版本,32位装在32位系统,64位系统可以装32位和64位JDK.64位JDK性能优于32位JDK.

测试的命令 java -xmx数值m –version 报错配置大小失败,反之成功

增加Tomcat最大连接数

使用场景

我在做完一个XXX项目后,测试时发现并发数量增加到一定程度就会很卡,于是我想到了是不是tomcat最大连接数设置有限制.果不其然,配置文件中最大值才500,于是我更改了最大连接数,根据业务我修改了连接数为2000,完美的解决了这个问题;

修改方法在conf/service.xml中默认值

minSpareThreads="30" maxSpareThreads="75" enableLookups="false"

redirectPort="8443" acceptCount="100" connectionTimeout="20000"

disableUploadTimeout="true" />,修改maxthreads的值即可

tomcat进行gzip压缩从而降低网络传输量

tomcat 压缩设置tomcat压缩gzip启用

HTTP 压缩可以大大提高浏览网站的速度,它的原理是,

在客户端请求服务器对应资源后,从服务器端将资源文件压缩,

再输出到客户端,由客户端的浏览器负责解压缩并浏览。

相对于普通的浏览过程HTML ,CSS,Javascript , Text ,

它可以节省60%左右的流量。更为重要的是,它可以对动态生成的,

包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,

压缩效率也很高。

启用tomcatgzip压缩

要使用gzip压缩功能,你需要在Connector节点中加上如下属性

记住来源:http://www.qi788.com/info-42.html

compression="on" 打开压缩功能

compressionMinSize="50" 启用压缩的输出内容大小,默认为2KB

noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩

connectionTimeout="20000"

redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"

compression="on"

compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />

三十二、memcached的介绍

memcached是一个用C语言开发的分布式的缓存,内部基于类似hashMap的结构。

它的优点是协议简单,内置内存存储,并且他的

分布式算法是在客户端完成的,不需要服务器端进行

通信,我们当时在做项目的时候因为考虑到项目

的高可用性高扩展性,因此在服务器部署方面采用

了apache+jk+tomcat这种负载均衡的方式,但是也带来了一个问题

就是session共享的问题,虽然可以通过session复制来解决这个

问题,但是在性能方面存在缺陷,所以最后我们采用了

用memcached来存储session,这样既解决了session共享

问题,也解决了session复制那种方式所产生的性能问题。

了解(不必主动说,但别人问的话一定要知道)

memcached是以KEY-VALUE的方式进行数据存储的,

KEY的大小限制:Key(max)<=250个字符;

VALUE在存储时有限制:Value(max)<= 1M;

根据最近最少使用原则删除对象即LRU.

memcached默认过期时间:ExpiresTime(max)= 30(days)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,859评论 18 139
  • 一、MemCache简介 session MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存...
    李伟铭MIng阅读 3,862评论 2 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,935评论 6 342
  • 百年孤独——阿玛兰妲 “至于阿玛兰妲,那孩子的铁石心肠曾令她恐惧,她刻骨的痛苦曾令她痛苦,但现在她终于发现阿玛兰妲...
    早窗阅读 3,216评论 1 2