分布式编译系统的搭建

开发 前端
目前比较常用的编译工具有2个 distcc 与 icecream , 本文使用distcc 进行部署。

由于MySQL 源码编译单机耗费的时间过于长,最近MySQL 变成8.0.27 以后编译时间明显更耗时了,并且办公室内有多余的空闲机器。

使用分布式编译,可以在不改变现有环境的情况下,提高编译效率。 

目前比较常用的编译工具有2个 distcc 与 icecream , 本文使用distcc 进行部署。

部署distcc

分为两个部分一个是服务端,一个是客户端

程序分别是distccd 和 distcc

服务端

也是我们空余的设备上

可以基于Docker部署镜像版本最好和客户端一致,编译器版本需求GCC 或者 Clang 一致

moyu22:/opt/distcc$ cat Dockerfile 
FROM ubuntu:20.04

RUN apt update && \
apt install  -y net-tools distcc gcc g++ clang-12 && \
apt clean && \
echo "#!/bin/bash \n distccd --daemon --no-detach --no-detach --user nobody --allow 0.0.0.0/0 --log-stderr --stats \${OPT}" > ./entrypoint.sh && \
chmod +x ./entrypoint.sh

# Run the generated shell script.
ENTRYPOINT ["./entrypoint.sh"]

打包一个distccd 的镜像

docker build -f Dockerfile -t distcc .

Docker启动

docker run -t -d -net=host distccd

也可以使用docker-compose.yml启动

version: '3'

services:
    distcc:
      image: "chestnutsj/distcc:latest"
      hostname: distcc
      container_name: distcc
      privileged: true
      ports:
        - 3632:3632
        - 3633:3633
docker-compose -f docker-compoe.yml  up -d

默认情况下,将运行所有人都可以运行访问,如果有需要认证可以在环境变量 OPT 中添加,或者修改默认的端口

客户端

配置

本地环境 20.04 (),需要编译项目的机器上,安装distcc

moyu20: apt install -y distcc

在配置中添加服务器下的 /etc/distcc/hosts  ,也可以在 $HOME/.distcc/hosts , 域名可以按照服务器优先级添加

hostname[/LIMIT]
192.168.1.102/32

默认的limit 数量是 4 如果需要更高的效率可以使用更高的数值用

root@dev:/# distcc -j
48
默认limit为 hostname * 4

单个文件可以使用

distcc g++ t1.cpp

以MySQL源码为例

cmake mysql_source \
-DBUILD_TESTING=OFF -DUSE_GTAGS=OFF -DUSE_CTAGS=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DFEATURE_SET=community \
-DWITH_INNODB_MEMCACHED=ON -DWITH_ZLIB=bundled -DWITH_LIBEVENT=bundled -DWITH_ZSTD=bundled \
-DENABLE_DOWNLOADS=ON \
-DDOWNLOAD_BOOST=1 \
..

添加指定的编译

 -DCMAKE_C_COMPILER_LAUNCHER=distcc
 -DCMAKE_CXX_COMPILER_LAUNCHER=distcc

编译项目

make -j 32

可以明显降低编译时间

监控

编译期间可以查看distcc 使用情况

distccmon-text 1 间隔时间 1 秒

责任编辑:武晓燕 来源: GreatSQL社区
相关推荐

2023-05-12 08:23:03

分布式系统网络

2023-02-11 00:04:17

分布式系统安全

2012-02-23 09:59:05

Hadoop分布式应用

2023-05-29 14:07:00

Zuul网关系统

2023-10-26 18:10:43

分布式并行技术系统

2017-10-27 08:40:44

分布式存储剪枝系统

2017-08-10 10:17:32

Hadoop分布式搭建

2017-10-17 08:33:31

存储系统分布式

2019-06-19 15:40:06

分布式锁RedisJava

2023-10-08 10:49:16

搜索系统分布式系统

2019-07-17 22:23:01

分布式系统负载均衡架构

2017-12-05 09:43:42

分布式系统核心

2019-08-12 16:07:32

Web系统集群

2018-12-14 10:06:22

缓存分布式系统

2019-08-05 07:58:01

分布式架构系统

2010-11-01 05:50:46

分布式文件系统

2011-04-18 14:43:23

分布式测试分布式测试

2010-03-24 17:07:52

无线分布式系统

2023-02-23 07:55:41

2019-03-18 16:29:01

分布式系统Redis
点赞
收藏

51CTO技术栈公众号