zoukankan      html  css  js  c++  java
  • distcc配置

    1、需要 python 头文件,下载安装。

    2、下载安装 distcc-3.1.tar.bz2。

    3、export DISTCC_HOSTS='localhost 10.10.13.162‘     //添加所有欲分发的distcc服务器IP列表,ip应按各服务器性能由好到差排列。

    export DISTCC_VERBOSE=1   //给出调试信息

    export DISTCC_LOG=”/root/disstcc.log”     //编译出错时可以查看日志,默认路径是 /var/log/messages

    以上可以写入到 ~/.bash_profile 中,以便开机有效。

    4、在每一台服务器上安装好 distcc 之后,先启动服务器 distccd --daemon --user nobody --allow 10.10.0.0/16  接收来自10.10网段的所有TCP连接,最好加入开机启动。(如果不加--user nobody则会提示:distccd[4596] (dcc_preferred_user) Warning: no such user as "distcc")

    5、可以通过 distccmon-text 1 命令查看分布编译情况,1表示1秒。如果在 ./configure 时,加上了 --with-gnome or --with-gtk 选项,则还可以使用 distccmon-gnome 1 这个图形界面来查看。

    6、可以和 ccache 配合 : time make -j12 CXX="ccache distcc",不过感觉同时使用 distcc 和 ccache 的效果跟只使用 distcc 的效果差不多。如果只有一台机器,就使用 ccache ,如果有多台机器就只使用 distcc 吧。

    7、使用 dmucs 配合 distcc 解决分布式编译的负载均衡问题:

    http://www.ibm.com/developerworks/cn/aix/library/0905_yangyi_distcc/

    下面转自:http://blog.chinaunix.net/uid-20553497-id-3214404.html

    distcc是一个分布式的编译工具,包含distccd和distcc。其中distccd是服务端,需要安装在远程协助编译的多台服务器上,而distcc是一个客户端,需要安装在分发编译任务的服务器上。centos可以直接在http://pkgs.repoforge.org/distcc/ 上下载2个RPM包:

    distcc-2.18.3-2.el5.rf.x86_64.rpm
    distcc-server-2.18.3-2.el5.rf.x86_64.rpm
     
    test[1-5].inner.net是我的5台服务器,直接在5台服务器上都安装这2个包,然后同步一下5台服务器的配置文件

    1. # cat /etc/sysconfig/distccd
    2. ### See distcc(1) manual page for more information on these options.
    3. ###
    4. OPTIONS="--nice 5 --jobs 10 --port 3632 --allow 127.0.0.1 --allow 10.0.0.0/8 "
    5. #USER="distcc"
    6. ### Set this if don't want distccd to use gcc or g++ by accident.
    7. #DISTCCPATH="/usr/lib/distcc/bin"
    红色部分是需要注意的,distcc默认使用的端口是3632,而distccd默认的端口是1234,这个搞得我查了很久才找到原因。
     
    修改配置后对于每个服务器 

    1. chkconfig --level 2345 distccd on
    2. service distccd restart
    然后就可以使用了,以编译nginx为例
     

    1. export CC=distcc; ./configure
    2. export DISTCC_HOSTS="test1.inner.net .... test5.inner.net"
    3. make -j 20
    这样就会向每台服务器分发出任务。
    预处理工作其实还是在分发任务的机器上执行的,然后把预处理后的代码传输到远程服务器,编译成.o文件,再取回来链接生成可执行程序。
     
    编译的时候参与编译的服务器上可以看到日志 tail /var/log/distccd.log
    分发编译任务的机器上可以使用 distccmon-text 1查看编译任务的分发
  • 相关阅读:
    直播报名| Kylin on Parquet 介绍及快速上手
    直播 | Apache Kylin & Apache Hudi Meetup
    1. MySQL体系结构和存储引擎——MySQL体系结构、存储引擎、连接MySQL
    深入理解Java虚拟机(第三版)-13.Java内存模型与线程
    Redis 字典实现
    JVM 判断对象已死亡?
    堆内存常见的分配策略、 经典的垃圾收集器、CMS与G1收集器及二者的比较
    String.intern() 和常量池
    Java 对象的创建过程(五步)、对象的内存布局、对象的访问定位
    Java内存区域(运行时数据区域)详解、JDK1.8与JDK1.7的区别
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/2953787.html
Copyright © 2011-2022 走看看