翼度科技»论坛 编程开发 mysql 查看内容

分布式编译系统的搭建

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15

  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:dan
  • 文章来源:GreatSQL社区原创
由于MySQL 源码编译单机耗费的时间过于长,最近MySQL 变成8.0.27 以后编译时间明显更耗时了,并且办公室内有多余的空闲机器。
使用分布式编译,可以在不改变现有环境的情况下,提高编译效率。
目前比较常用的编译工具有2个 distcc 与 icecream , 本文使用distcc 进行部署。
部署distcc

分为两个部分一个是服务端,一个是客户端
程序分别是distccd 和 distcc
服务端

也是我们空余的设备上
可以基于Docker部署镜像版本最好和客户端一致,编译器版本需求GCC 或者 Clang 一致
  1. moyu22:/opt/distcc$ cat Dockerfile
  2. FROM ubuntu:20.04
  3. RUN apt update && \
  4. apt install  -y net-tools distcc gcc g++ clang-12 && \
  5. apt clean && \
  6. echo "#!/bin/bash \n distccd --daemon --no-detach --no-detach --user nobody --allow 0.0.0.0/0 --log-stderr --stats \${OPT}" > ./entrypoint.sh && \
  7. chmod +x ./entrypoint.sh
  8. # Run the generated shell script.
  9. ENTRYPOINT ["./entrypoint.sh"]
复制代码
打包一个distccd 的镜像
  1. docker build -f Dockerfile -t distcc .
复制代码
Docker启动
  1. docker run -t -d -net=host distccd
复制代码
也可以使用docker-compose.yml启动
  1. version: '3'
  2. services:
  3.     distcc:
  4.       image: "chestnutsj/distcc:latest"
  5.       hostname: distcc
  6.       container_name: distcc
  7.       privileged: true
  8.       ports:
  9.         - 3632:3632
  10.         - 3633:3633
  11. docker-compose -f docker-compoe.yml  up -d
复制代码
默认情况下,将运行所有人都可以运行访问,如果有需要认证可以在环境变量 OPT 中添加,或者修改默认的端口
客户端

配置

本地环境 20.04 (),需要编译项目的机器上,安装distcc
  1. moyu20: apt install -y distcc
复制代码
在配置中添加服务器下的 /etc/distcc/hosts ,也可以在 $HOME/.distcc/hosts , 域名可以按照服务器优先级添加
  1. hostname[/LIMIT]
  2. 192.168.1.102/32
复制代码
默认的limit 数量是 4 如果需要更高的效率可以使用更高的数值用
  1. root@dev:/# distcc -j
  2. 48
  3. 默认limit为 hostname * 4
复制代码
单个文件可以使用
  1. distcc g++ t1.cpp
复制代码
以MySQL源码为例
  1. cmake mysql_source \
  2. -DBUILD_TESTING=OFF -DUSE_GTAGS=OFF -DUSE_CTAGS=OFF \
  3. -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  4. -DFEATURE_SET=community \
  5. -DWITH_INNODB_MEMCACHED=ON -DWITH_ZLIB=bundled -DWITH_LIBEVENT=bundled -DWITH_ZSTD=bundled \
  6. -DENABLE_DOWNLOADS=ON \
  7. -DDOWNLOAD_BOOST=1 \
  8. ..
  9. 添加指定的编译
  10. -DCMAKE_C_COMPILER_LAUNCHER=distcc
  11. -DCMAKE_CXX_COMPILER_LAUNCHER=distcc
复制代码
编译项目
  1. make -j 32
复制代码
可以明显降低编译时间
监控

编译期间可以查看distcc 使用情况
  1. distccmon-text 1 间隔时间 1 秒
复制代码
Enjoy GreatSQL
来源:https://www.cnblogs.com/greatsql/p/17354744.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具