우리는 yum 리포지토리를 사용하여 소프트웨어를 프로덕션 인스턴스에 배포합니다. 불행하게도 createrepo는 병목 현상이 발생하고 있으며 저장소에는 469 개의 패키지 만 있습니다.
$ time createrepo /opt/tm-yum-repo
Spawning worker 0 with 469 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
real 0m43.188s
user 0m37.798s
sys 0m1.296s
더 빨라지게하려면 어떻게해야합니까?
답변
--cachedir
그의 대답에 dmourati에 의해 주어진 옵션을 사용하면 도움이 될 것입니다,하지만 당신은 사용해야 --update
한 번에 모든 469 개 패키지를 교체하지 특히,.
--update
If metadata already exists in the outputdir and an rpm is
unchanged (based on file size and mtime) since the metadata was
generated, reuse the existing metadata rather than recalculating
it. In the case of a large repository with only a few new or
modified rpms this can significantly reduce I/O and processing
time.
또한이 방식으로 배포하는 것이 시간에 민감하고 --update
도움이되지 않는 경우이 패키지에 대해 별도의 저장소를 만드는 것이 좋습니다.
답변
createrepo 맨 페이지에서 cachedir에 대한 옵션이 표시됩니다.
-c --cachedir <path>
Specify a directory to use as a cachedir. This allows createrepo
to create a cache of checksums of packages in the repository. In
consecutive runs of createrepo over the same repository of files
that do not have a complete change out of all packages this
decreases the processing time dramatically.
나는 거기에서 시작할 것이다.
그 속도가 충분하지 않다면 SSD 또는 tmpfs를 살펴보십시오 .
답변
멀티 코어 CPU에 –workers를 사용해 보셨습니까? 일반적으로 –workers 4를 사용하여 4 스레드의 createrepo를 생성합니다.