如何限制GitLab启动的git进程数?

时间:2014-02-06 19:57:34

标签: gitlab

我在Jenkins上运行了持续集成设置,每当我将更改推送到特定分支时,Jenkins就会启动50个EC2从站。每个奴隶检查分支并对分支运行一些测试。

问题是50个EC2从设备一次启动,它们从我的GitLab服务器检出分支,它为每个从设备启动一个git进程并快速耗尽内存(尽管服务器有7.5GB) RAM。)

如果我正在查看顶部,我可以看到,一旦奴隶开始行动,就会出现许多git进程并开始快速消耗所有内存。 kern.log告诉我内核必须定期杀死一个git进程,因为系统内存不足。

我的问题是如何限制GitLab启动的git进程数量,以免奴隶认为GitLab已经消失。 (例如,我希望GitLab将请求放入队列并一次为它们提供10个。)

我也考虑过其他一些想法。例如,我可以让一些奴隶(种子奴隶)从GitLab拉出分支然后让其余的奴隶从那些种子奴隶中拉出分支。但这似乎可能涉及一些工作。

另一个想法是,我可以将EC2发布错开几秒钟,以便在几分钟内传播请求。或者,我可以获得更多记忆。

我欢迎任何其他处理此问题的方法的想法。

1 个答案:

答案 0 :(得分:0)

我认为你最后的想法是最好的: 尝试为你的gitlab实例传播负载。

例如,您可以通过构建工件来启动CI:

假设您使用say java,您可以在CI服务器上构建war文件,并通过共享的S3存储桶进行分发。

这样,每个构建只查询一次gitlab,并根据需要运行多个副本。每个实例都下载构建并运行其测试。