首页 > 其他分享 >分布式编译系统的搭建

分布式编译系统的搭建

时间:2023-04-26 09:57:26浏览次数:43  
标签:-- distcc GreatSQL 编译 MySQL docker 分布式 编译系统 搭建

  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:dan
  • 文章来源:GreatSQL社区原创

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

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

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

部署distcc

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

程序分别是distccddistcc

服务端

也是我们空余的设备上

可以基于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 秒

Enjoy GreatSQL

标签:--,distcc,GreatSQL,编译,MySQL,docker,分布式,编译系统,搭建
From: https://www.cnblogs.com/greatsql/p/17354744.html

相关文章

  • Redis - -分布式锁
    Redis完成分布式锁#1.1缓存>当执行增删改操纵时必须保证缓存和数据库数据一致性。---删除缓存```java@OverridepublicDeptinsert(Deptdept){inti=deptMapper.insert(dept);returndept;}@OverridepublicIntegerd......
  • 滑动窗口算法实现分布式第三方请求限频
    一.业务背景 第三方服务接口存在频率调用限制(例如,1s5次,超过5次返回超出频率),己方服务存在并发处理的情况,为了保证服务的成功率,且达到第三方限制的最大吞吐量,故需要一个限频调用的算法二.实现思路常见限频算法一般有五种,漏桶算法、令牌桶算法、固定窗口算法,滑动窗口算法,漏斗算......
  • DNS集群搭建
    DNS实践(DNS集群)实验环境:LinuxRocky8.6三台10.0.0.127主DNS10.0.0.128从DNS10.0.0.131client客户端软件:bind(实现DNS),bind-utils(测试工具)(yum-yinstallbindbind-utils)1.主DNS配置在/etc/named.conf配置#注释下面两行//listen-onport53{localhost;};#......
  • “源擎”云原生分布式核心业务系统有什么产品优势?
     “源擎”核心系统利用云原生、分布式、微服务技术,基于企业架构设计思想,构建了基础服务、业务服务、交易中心以及系列支撑组件,包含业务架构和多个微服务应用。业务架构中,交易中心为银行提供了更灵活的选择,支持产品粒度的功能可替换,同时也能快速引入新的产品服务,支持未来业务发展,实......
  • 下一代大数据分布式存储技术Apache Ozone初步研究
    @目录概述定义特性架构总体架构写数据读数据部署安装方式安装Docker启动Docker-compose启动企业预置型(OnPremise)安装实践命令行接口Ofs(Hadoop兼容)ReconAPI概述定义ApacheOzone官网地址https://ozone.apache.org/最新版本1.3.0ApacheOzone官网最新文档地址http......
  • Python Selenium搭建UI自动化测试框架
    自动化测试是软件测试中非常重要的一部分,可以提高测试效率和测试覆盖率。在UI自动化测试中,Selenium是非常流行的工具。本文将介绍如何使用Python和Selenium搭建UI自动化测试框架。一、环境准备在开始搭建UI自动化测试框架之前,需要先安装Python和Selenium。可以从Python官网下载P......
  • ray-分布式计算框架-集群与异步Job管理
    0.ray简介ray是开源分布式计算框架,为并行处理提供计算层,用于扩展AI与Python应用程序,是ML工作负载统一工具包RayAIRuntimeML应用程序库集RayCore通用分布式计算库Task--Ray允许任意Python函数在单独的Pythonworker上运行,这些异步Python函数称为任务Actor......
  • [ubuntu] 星火链快速搭建体验节点
    环境要求部署最小硬件要求:内存:8G硬盘:100Gcpu:8核Quicknode节点部署获取镜像版本号浏览器打开链接http://test.bifcore.bitfactory.cn/hello获取镜像dockerpullcaictdevelop/bif-core:v${chain_version}chain_version最新为上一步返回镜像版本号获取镜像报错原因......
  • 直播软件搭建,为文字/图片添加按压效果
    直播软件搭建,为文字/图片添加按压效果1、文字layout布局: <TextView   android:layout_width="@dimen/textview_button_width"    android:layout_height="match_parent"    android:text="@string/wifi_item_hulv"   android:textColor="@drawa......
  • Android编译系统
    一.概述在Android7.0之前,Android编译系统使用GNUMake描述和shell来构建编译规则,模块定义都使用Android.mk进行定义,Android.mk的本质就是Makefile,但是随着Android的工程越来越大,模块越来越多,Makefile组织的项目编译时间越来越长。因此,在Android7.0开始,Google采用ninja来代......