应用启动流程
2016-12-24 11:52:38 0 举报
应用启动流程通常包括以下步骤:首先,用户点击应用图标或者通过其他方式打开应用;接着,操作系统会加载应用的代码和资源文件;然后,系统会初始化应用的各个组件和模块,例如窗口、视图控制器等;接下来,系统会调用应用的入口函数,即main函数,开始执行应用的主要逻辑;最后,应用会根据用户的输入和操作来响应事件并更新界面。这个过程可能会因为不同的操作系统和应用类型而有所不同。总之,应用启动流程是一个复杂的过程,需要多个步骤才能完成。
作者其他创作
大纲/内容
sudo -u admin sh /home/admin/${appName}/bin/appctl.sh restart
设置Java默认的启动参数
update_setenv.sh
启动命令执行
设置Tomcat启动的端口
需要保证JVM启动参数中内存相关的设置与机器的实际内存相匹配
业务应用启动完成
pandora容器优雅下线
设置一些操作的默认超时时间
备份上次tomcat日志并且只保留最近20个日志文件;
准备好APP_HOME/target/目录下的应用包,以及taobao-sar包;并建立APP_HOME/.default/deploy/目录下的应用包,和taobao-sar包的软链接到APP_HOME/target/下
appctl.sh
启动Tomcat时,除了会传start 参数,还会根据setenv.sh中设置是否开启DEBUG,传一个jpda 给到catalina.sh。这个标记是JPDA_ENABLE:0默认不开启,该标记可以在dockerfile中设置
准备业务应用实际启动的CATALINA_BASE目录:复制tomcat安装目录conf下的文件到.default/conf;复制APP_HOME/conf/tomcat的文件到.default/conf;修改.default/conf/server.xml文件中8080端口改为setenv.sh设置的TOMCAT_PORT:7001,该参数可以通过dockerfile来自定义;在.default/conf/web.xml文件中加入了对/status.taobao请求的特殊处理
触发update_setenv.sh执行
从/home/admin/customjavaopts.sh文件中获取业务应用特殊的jvm参数设置,该文件内容可以通过dockerfile的RUN命令进行修改
该文件设置了4个空方法:beforeStartApp\\ afterStartApp\\ beforeStopApp\\ afterStopApp可以自己重写该文件来覆盖来满足业务应用的特殊场景,dockerfile中可以用COPY来覆盖
执行APP_HOME/bin/preload.sh进行健康检查;执行HSF的优雅上线;创建status.taobao文件到目录APP_HOME/target/{appName}.war包下,应用的VIP是否健康的监控全靠这个文件;执行hook.sh的afterStartApp方法;
设置是否启动Nginx的标记
这里会把setenv.sh中的设置HSF上下线超时时间作为参数进行执行,该参数可以通过dockerfile修改。(HSF_ONLINE_TIMEOUT:120s)
应用机器的实际内存,以及修正后的内存参数都可以在tomcat_stdout.log中的开始看到
是否准备taobao-sar包这里依赖setenv.sh中设置一个环境变量UPDATE_PANDORA:true,如果应用不依赖淘系的taobao-sar,可以在dockerfile中特殊设置。同时淘系java应用有一个规范就是要把应用打出来的tgz包放到APP_HOME/target下,dockerfile中一定会体现
设置是否开启Debug标记及端口
hook.sh
对于采用jdk版本大于8的将jvm的启动参数中PermSize替换为MetaspaceSize;MaxPermSize替换为MaxMetaspaceSize;并去除jvm参数:-XX:+UseCMSCompactAtFullCollection
虽然tomcat被安装在/opt/taobao/tomcat目录下,但是应用启动时对于tomcat下conf\\delpoy\\work\\tmp都复制了一份到APP_HOME/.default下来作为tomcat实际启动时所依赖的CATALINA_BASE目录
这里会把setenv.sh中的设置的tomcat停止超时时间作为参数进行执行,该参数可以通过dockerfile修改(TOMCAT_STOP_WAIT_TIME:5s)
根据应用release文件的jdk版本设置真正的JAVA_HOME
业务应用启动流程
触发hook.sh的执行
触发setenv.sh执行
setenv.sh
根据setenv.sh中的是否启动nginx的标志,进行nginx的启动,NGINX_SKIP:0默认启动,设置为1不启动,dockerfile中可以进行设置
执行hook.sh的beforeStopApp方法;检查tomcat的进程,并停止tomcat容器,进行gc日志备份;执行hook.sh的afterStopApp方法
0 条评论
下一页