deployment - 有没有办法并行运行 RPM 安装?

标签 deployment rpm

我正在执行部署过程中的性能改进任务。在整个过程中,我看到 rpm 安装是按顺序进行的,并且依赖包安装需要更多时间。我是 RPM 的新手,正在寻找一种并行运行这些安装以减少部署时间的方法。

如果您能为我提供并行运行这些 rpm 的建议/解决方案,那就太好了!

最佳答案

因此,当您安装 RPM 时,它会创建所谓的 rpm 数据库锁,并且该锁文件会阻止您运行另一个 rpm 实例(以及关联 yum)。我想这是为了确保在尝试安装多个软件包时交易不会被搞砸。想象一下,有一个包需要您已经安装的库的更新版本,如果两个进程试图一个接一个地修改这些文件,这会如何冲突,库链接将如何工作,可能存在什么样的引用问题, 等等。?

这意味着即使您尝试从两个不同的终端安装两个 RPM,第二次尝试也会失败,因为第一个进程已经拥有 rpm 数据库锁,您必须等到该锁被释放才能从另一个终端安装,或者基本上是另一个过程。

所以这就引出了另一个问题,如果我们必须按顺序安装软件包,我们如何提高 RPM 的安装速度?我建议查看以下选项:

查看 RPM 是从哪里拉下来的,如果它来自某个外部 EPEL 机器或网络外部的另一台服务器,请考虑设置本地镜像,这将允许在您的镜像上更新包,然后在您执行部署时您正在从具有更多带宽的本地位置拉取数据,以确保它尽快到达机器。

考虑在部署过程中检查 RAM 利用率,如果盒子受到冲击,yum 安装将慢得多。如果可能,在部署期间停止某些服务以增加安装可能是值得的。

确认您需要正在安装的所有内容。这些软件包中的一些是否有可能通过 kickstart 或配置管理工具进入初始服务器构建?我们正在安装的 RPM(如果是自定义的)是否可能具有您组织中默认的依赖项,并且实际上并不需要(有时人们只是有一个默认规范,一切都是建立在基础之上的)?

以上就是我现在能想到的所有建议,希望可以帮助您入门。

关于deployment - 有没有办法并行运行 RPM 安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15698707/

相关文章:

go - 从交叉编译的二进制文件构建RPM软件包Go app tarball

ImageMagick 需要一个不存在的依赖项?

amazon-web-services - 更新 AWS ECS 服务

laravel - 如何在同一台服务器上部署分离的后端和前端

unix - 打包用于部署跨平台?

linux - 在 Mac 上创建 RPM

Git忽略文件,不删除它

ruby-on-rails - 在两个 Rails 应用程序之间共享视觉 Assets 以及一些 Controller ?

repository - 新的 Nexus 3.0 OSS 版本是否支持 rpm repo?

Linux - 如何通过 shell 脚本比较已安装的软件包版本新安装