看起来需要限制并行运行的进程数。目前,您将运行与模式一样多的进程,在prod中,您有100个进程,因此会耗尽所有ram。实现这一点的方法有很多,包括
pexec
parallel
甚至
xargs
. 我假设你可以访问
参数代换
mklement0
great answer
通过示例介绍如何将xargs与-P选项一起使用:
-P, --max-procs=MAX-PROCS Run up to max-procs processes at a time
编辑:在使用-P进行实验后使用示例进行更新。
此命令演示-P:
echo -e "a\nb\nc\nd\n" | xargs -i -P 2 sh -c 'touch {}.log; sleep 3;'
ls --full-time
$(echo "SET SESSION group_concat_max_len=8192; select GROUP_CONCAT(SCHEMA_NAME SEPARATOR ' ') from information_schema.SCHEMATA where SCHEMA_NAME like 'FOO_%'" | mysql -h$DB_URL -P$DB_PORT -u$DB_USER -p$DB_PASSWORD -sN) | xargs -i -P 10 sh -c 'echo "Starting Migration for : {}"; flyway -configFile=src/flyway.conf -user=$DB_USER -password=$DB_PASSWORD -url="jdbc:mysql://$DB_URL:$DB_PORT" -schemas={} -locations=filesystem:src/schema/ migrate 2>&1 | tee {}.log'