设为首页 收藏本站
查看: 661|回复: 0

[经验分享] Linux下jvm与tomcat的安全与优化

[复制链接]

尚未签到

发表于 2018-12-1 11:44:40 | 显示全部楼层 |阅读模式
上一节我们部署了tomcat服务,大家可以看到这个服务部署起来真的是非常的容易,但前提是你要学好前面的命令基础。今天我打算在上节的基础上给大家加深点儿,给大家讲讲tomcat服务的安全与优化!我们为什么不是把服务搭建好就可以了嘛,怎么还要做安全与优化呢?理论上是把服务部署好就可以了,但是为了我们的服务器运行的更安全更稳定!做安全优化是必须的了!
在上节我们知道jdk是个java虚拟机(JVM),既然是虚拟机,那他就有内存的概念,在Java虚拟机里他们是内存,但是叫法不一样,叫什么呢?看下面:
DSC0000.gif

  JVM优化参数名字解释 DSC0001.gif
  1.方法区
也称"永久代”、“非堆”它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,以通过-XX:PermSize -XX:MaxPermSize 参数限制方法区的大小。
2.java
也叫做GC堆是java虚拟机所管理的内存中最大的一块内存区域,也是被各个线程共享的内存区域,在JVM启动时创建。该内存区域存放了对象实例及数组(所有new的对象)。其大小通过-Xms(最小值)-Xmx(最大值)参数设置,-XmsJVM启动时申请的最小内存,默认为操作系统物理内存的1/64但小于1G-XmxJVM可申请的最大内存,默认为物理内存的1/4 但小于1G 注意实际中不要大于4G,危险!大于4G当在垃圾回收时会出现问题。
3.程序计数器
它的作用是当前线程所执行的字节码的行号指示器

  • 4.java
描述的是java 方法执行的内存模型,优点是存取速度比堆快,仅此于寄存器,栈数据可以共享。缺点缺乏灵活性。默认参数,不能动。

  • 5.本地方法栈
与虚拟机栈基本类似,区别在于虚拟机栈为虚拟机执行的java方法服务,而本地方法栈则是为Native方法服务。
优化原因
     JDK默认的安装的环境默认参数是为开发环境制定,而非适合生产环境,其内存和线程的配置,默认都很低,容易成为性能瓶颈。
优化参数配置标准
配置对参数
-Xms 初始堆大小
-Xmx 最大堆大小
一般设置为:-Xms=-Xmx
好处是避免每次在GC后,调整堆大小,减少系统内存分配。
年轻代
研究表明大部分对象都是朝生暮死,随生随灭的。所以对于年轻代在GC时都采取复制收集算法;
配置方法是:-Xmn256m 表示年轻代大小
配置标准是:他的大小是Xms的一半
他里面又分里面又分为3个区域:
一个Eden,所有新建对象都会存在于该区
两个Survivor区,用来实施复制算法。
Eden区为对象通常最初分配到的地方,Survivor区分为S0S1两块大小相等的区域。
持久代
配置参数是-XX:PermSize设置持久代(perm gen)初始值
-XX:MaxPermSize设置持久代最大值
配置持久代的标准是-XX:PermSize的值等于-XX:MaxPermSize 因为持久代的调整也会导致堆内存需要触发GC(垃圾回收)
他的作用是存放class,method元信息,一版设置128M就足够了,设置的原则是预留30%的空间。
JVM内存垃圾回收(GC
GC他就是一个内存管理机制,JVM是先通过一些算法将垃圾收集起来
垃圾收集算法有:
引用计数算法
根据搜索算法
JVM垃圾回收算法:

  • 1.复制算法
  • 2.标记清除算法
  • 3.标记整理压缩算法
  垃圾收集器主要用于新生代和老年代。
  常见的垃圾回收器有
  Parallel
  ParNew
  Serial
  CMS
  开启回收器
  -XX:+UseParallelGC
  日志格式
  -XX:ParallelGCThreads=20 -Xloggc:/var/log/gc/gc_log"
  此篇文章重在理解上面的图,然后大家根据图来在自己实际的生产环境中做相应的参数配置,标准就按照上面的基准做就可以啦!是不是也很简单啊!
  下面看下我们的tomcat优化 DSC0002.gif
tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈。
  优化参数详解
  1.更改标签
  ,防止***扫描
  2.更改标签
  防止******
  3.降权运行tomcat
不用root用户启动tomcat
  4.更改站点目录
server.xml下添加
  
  5.删除默认webapp下的文件
此目的是防止软件漏
  6.版本信息隐藏
修改conf/web.xml,重定向403404以及500等错误页面。
  不要在tomcat中配,在网页工程中的web.xml中配置:
  
  
   403
   /page/error/403.jsp
  
  
  
   404
    /page/error/404.jsp
  
  
  
   500
   /page/error/500.jsp
  
  7.禁用DNS查询
修改server.xml文件中的Connector元素,修改属性enableLookups参数值:enableLookups="false"
  8.设置session过期时间
  conf\web.xml中通过参数指定:
  60
  9.Apr插件提高Tomcat性能
Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术.
我们实际生产中就按照上面的标准做安全优化即可,注意我这里提醒下大家,当你在上真机的时候,考虑下现在本地模拟环境下做好测试没有问题在把配置参数搬到真机上面去就好了!
  
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-641937-1-1.html 上篇帖子: tomcat启动多实例 下篇帖子: 在CentOS 中yum 安装Tomcat 6
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表