我有一个现有的 jenkins 作业,它启动一个 shell 脚本将我的生产环境复制到 qa 中。
我们向产品中添加了大量数据(gzip 转储从 2gig 增加到 15gig),突然我的 jenkins 工作开始失败。
我们在 aws 中运行 postgres 9.5,在 jenkins 中运行 2.171。所有 jenkins 作业都在 master 上执行,master 是同一台服务器,有 6 个执行程序。没有内存/cpu/磁盘空间问题
尝试了一些方法:statement_timeout
postgres 实例上已经是0
。出于某种原因,从 bash 切换到 sh 对某些脚本有帮助,但对其他脚本没有帮助。特别是这个脚本仍然有各种 psql 语句被杀死。从交互式 shell 运行时,该脚本运行良好。
还尝试禁用进程树杀手https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller.不行。
下面是两个比较无害的命令的代码,它们应该运行得相当快。$POSTGRES_HOST_OPTS
只有数据库名称和端口:
echo -e "Running POSTGIS command"
psql $POSTGRES_HOST_OPTS -U $POSTGRES_ENV_POSTGRES_USER_PROD -d postgres -c "CREATE EXTENSION postgis;"
echo -e "Creating temporary user dv3_qa_tmp so we can rename the $POSTGRES_ENV_POSTGRES_USER_PROD user\n"
psql $POSTGRES_HOST_OPTS -U $POSTGRES_ENV_POSTGRES_USER_PROD -d postgres -c "create role dv3_qa_tmp password '$PGPASSWORD_QA' createdb createrole inherit login;"
以下是詹金斯控制台的输出:
Waiting for new instance to be available...
-e Renaming database dv3_prod to dv3_qa
Killed
-e Running POSTGIS command
Killed
-e Creating temporary user dv3_qa_tmp so we can rename the dv3_prod_user user
Killed
-e Renaming user dv3_prod_user to dv3_qa_user
Killed
Killed
-e
All done
jenkins.log 中有一些关于文件描述符的内容,但不确定它们之间有何关联。我还尝试重定向 stderr,这样可以消除此消息,但不会阻止命令被终止。
Apr 10, 2019 4:23:31 PM hudson.Proc$LocalProc join
WARNING: Process leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information
java.lang.Exception
at hudson.Proc$LocalProc.join(Proc.java:334)
at hudson.tasks.CommandInterpreter.join(CommandInterpreter.java:155)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:109)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1818)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)