K8s中,tomcat的一部分jvm参数,如何通过env环境变量传递?
这两天解决的一个需求:
如果用户没有在deployment中设置env参数,则tomcat默认使用1G左右的内存;
如果用户在deployment中提供了jvm参数,则tomcat将这部分的参数,覆盖掉默认的jvm参数。
这个实现思路是ok的,但在实现shell脚本时,老司机也遇到了新问题:
如何判断一个有空格的环境变量是否存在?
最后通过百度搞定。
有空格的环境变量的读取,通过两种办法可解决,一种是改写IFS,一种是用双引号。
比如,deployment.yaml的部分内容如下:
...
env:
- name: XXX_JAVA_OPTS
value: "-Xms500m -Xmx950m -XX:MaxNewSize=250m -XX:+UseConcMarkSweepGC"
...
那镜像里的处理脚本如下:
if [ "$XXX_JAVA_OPTS" ];then
JAVA_OPTS="$JAVA_OPTS $XXX_JAVA_OPTS"
else
JAVA_OPTS="$JAVA_OPTS -Xms800m -Xmx900m -XX:MaxNewSize=256m"
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
fi
也可如下:
IFS_old=$IFS
IFS= $'\n'
if [ $XXX_JAVA_OPTS ];then
JAVA_OPTS="$JAVA_OPTS $XXX_JAVA_OPTS"
else
JAVA_OPTS="$JAVA_OPTS -Xms800m -Xmx900m -XX:MaxNewSize=256m"
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
Fi
IFS=$IFS_old
K8s中,tomcat的一部分jvm参数,如何通过env环境变量传递?的更多相关文章
- 在CentOS7.4中安装jdk的几种方法及配置环境变量
在CentOS7.4中安装jdk的几种方法及配置环境变量 一.下载jdk jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads ...
- Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)
原文:http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html Tomcat启动分析(我们为什么要配置CATALIN ...
- 使用Visual VM 查看linux中tomcat运行时JVM内存
前言:在生产环境中经常发生服务器内存溢出,假死或者线程死锁等异常,导致服务不可用.我们经常使用的解决方法是通过分析错误日记,然后去寻找代码到底哪里出现了问题,这样的方式也许会奏效,但是排查起来耗费时间 ...
- JVM中的GC算法,JVM参数,垃圾收集器分类
一.在JVM中什么是垃圾?如何判断一个对象是否可被回收?哪些对象可以作为GC Roots的根 垃圾就是在内存中已经不再被使用到的空间就是垃圾. 1.引用计数法: 内部使用一个计数器,当有对象被引用+1 ...
- Linux中shell基础、重定向、管道符、环境变量
1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的 ...
- tomcat manager 的用户权限配置,及环境变量CATALINA_HOME的错位问题
因为tomcat的manager是管理其他项目的发布.删除等操作的管理项目,所以需要为其设置登陆用户和密码,以及用户相应的访问权限,配置如下: tomcat-users.xml需要添加如下内容: &l ...
- tomcat运行时JVM参数调整
进入tomcat/bin目录 catalina.bat 中加入set JAVA_OPTS=-Xms210m -Xmx256m -Xmn70m -XX:PermSize=150m -XX:MaxPerm ...
- 总结:在MyEclipse中部署一个wap应用时需要配置的环境变量,我的JDK是安装在C盘,mysql安装在D盘,Tomcat解压在E盘,所以路径一定要看清楚哦,!
- maven中可以直接引用的java系统属性和环境变量属性
一.查看命令: 1 mvn help :system 二.引用 在pom文件中通过 ${变量名}来引用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
随机推荐
- Codeforces Round #374 (Div. 2) C(DAG上的DP)
C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...
- 前端学习 -- Css -- 否定伪类
语法::not(.选择器) 作用:可以从已选中的元素中剔除出某些元素. <!DOCTYPE html> <html> <head> <meta charset ...
- [学习笔记]插头dp
基于连通性的状压dp 巧妙之处:插头已经可以表示内部所有状态了. 就是讨论麻烦一些. 简介 转移方法:逐格转移,分类讨论 记录状态方法:最小表示法(每次要重新编号,对于一类没用“回路路径”之类的题,可 ...
- CDN中,字体文件的跨域问题和解决
@font-face是CSS3中的一个特性,可以把自己定义的Web字体嵌入到网页中,随着@font-face,越来越多的网页采用字体图标作为网页中的小图形. 比如Bootstrap就采用了Glyphi ...
- 遭遇:“传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确” 错误
http://www.cnblogs.com/delphinet/archive/2010/03/09/1681777.html 正在写一个类似文章的发表系统.其中记录文章内容的字段Contents设 ...
- C/S与B/S区别
1.什么是C/S结构C/S (Client/Server)结构,即客户机和服务器结构.它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现, ...
- 【hihocoder】二分·归并排序之逆序对
描述 在上一回.上上回以及上上上回里我们知道Nettle在玩<艦これ>.经过了一番苦战之后,Nettle又获得了的很多很多的船.这一天Nettle在检查自己的舰队列表:我们可以看到,船默认 ...
- python---django中orm的使用(2)
1.基于对象的正向查询和反向查询 在python---django中orm的使用(1)中也提到了正向和反向查找 表:一对多 书籍和出版社 class Book(models.Model): titl ...
- JMS学习(四)-一个简单的聊天应用程序分析
一,介绍 本文介绍一个简单的聊天应用程序:生产者将消息发送到Topic上,然后由ActiveMQ将该消息Push给订阅了该Topic的消费者.示例程序来自于<JAVA 消息服务--第二版 Mar ...
- 怎样提高WebService的性能
服务器端WebService程序: using System.Runtime.Serialization.Formatters.Binary; using System.IO; using Syste ...