这个问题是基础配置,但也正是因为这一点点没注意,把自己坑了两天.这里先梳理下nohup-java的配置
#配置程序的最大最小堆内存 -Xss 设置每个线程可使用的内存大小,即栈的大小
nohup java -Xms1g -Xmx1g -Xss256k \
#打印垃圾回收器时间 答应垃圾回收器信息
-XX:+PrintGCDateStamps -XX:+PrintGCDetails \
#将gc日志放于gc.log
-verbose:gc -Xloggc:${PROJECT_HOME}/log/gc.log \
#产生重大错误则执行关闭脚本
-XX:+HeapDumpOnOutOfMemoryError \
-XX:OnOutOfMemoryError="sh $PROJECT_HOME/bin/stop.sh" \
-DPROJECT_HOME=${PROJECT_HOME} \
#配置appname 在查讯删除时候便于找到 jps还是显示类名
-DAAP_NAME=${APP_NAME} \
-DCONFIG_PATH=${PROJECT_HOME}/conf \
-DPROJECT_CONF_DIR=${PROJECT_HOME}/conf \
#配置 一个产生 nohup.out,一个停止产生 (可用log进行日志分类 压缩日志)
# -cp ${CLASSPATH} ${CLASSNAME} > &
-cp ${CLASSPATH} ${CLASSNAME} > /dev/null 2>&1 &
关于-X配置 可以参考https://www.cnblogs.com/leeego-123/p/11572786.html
现在来总结问题,这个问题的直接原因是读配置出错,程序脚本采用了load-env.sh配置和 start.sh配置,配置如下:
if [ -z "${PROJECT_HOME}" ]; then
export PROJECT_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi
PROJECT_CONF_DIR=${PROJECT_HOME}/conf
for f in ${PROJECT_CONF_DIR}/*.*; do
CLASSPATH=${CLASSPATH}:${f};
done
PROJECT_LIB_DIR=${PROJECT_HOME}/lib
for f in ${PROJECT_LIB_DIR}/*.jar; do
CLASSPATH=${CLASSPATH}:${f};
done
CLASSNAME="com.demo.streaming.python.PythonModelCallerMain"
APP_NAME="model"
没有配置PROJECT_CONF_DIR导致读配置失败,读取了jar包自带的本地配置.至于为什么CONFIG_PATH没有生效,具体的还有待研究.