# MASS 矿池维护指北 # 矿池角色 ![image alt](https://i.loli.net/2018/12/09/5c0cf9c6e08b8.png) # Stratum ## 目录结构 | |- log/ 目录存储 Stratum Server 的日志,注意定期清理 |- PoC_stratum 可执行程序 Stratum 主体 |- cert.pem 根证书 用于认证合法的 Manager |- stratum1.crt stratum1.key 证书及密钥 |- log_config.conf Boost::Log 配置文件 建议不动 |- stratum_config.json Stratum 配置文件 ## 配置文件 ``` JSON { "listen_port": 1234, "manager_ip" : "172.16.47.32", "manager_port": 2223, "certs_info": { "cert_file" : "stratum1.crt", "key_file": "stratum1.key", "key_passphrase": "", "verify_cert_file": "cert.pem" }, "keepalive_times" : 3, "keepalive_interval": 8, "io_thread_nums": 4, "comp_thread_nums": 2, "reconnect_interval": 1, "upload_miners_info_interval": 10, "log_level": 0, "calc_slots": 20, "transfer_body_buffer_size": 81920 } ``` 其中需要调整的配置有,其余建议不动: `listen_port`: 监听端口,用于矿机连接 `manager_ip` 和 `manager_port`: port 为固定 2223,不要调整。 `certs_info`: 根据实际文件名调整 `io_thread_nums`: IO 线程数量,根据 CPU 核心数酌情调整 `comp_thread_nums`: 计算任务线程数量,根据 CPU 核心数酌情调整 ## 注意事项 stdout 有部分debug信息输出,请忽略 stratum server 偶尔 crash(频次极低,原因暂未排查), 建议使用 systemd 等管理工具配置自动重启。 # Manager ## 目录结构 | |- log/ 目录存储 Manager 的日志,注意定期清理 |- PoC_manager 可执行程序 PoC_manager 主体 |- cert.pem 根证书 用于认证合法的 Stratum Server 及 FullNode |- manager.crt manager.key 证书及密钥 |- log_config.conf Boost::Log 配置文件 建议不动 |- manager_config.json Manager 配置文件 ## 配置文件 ```json { "listen_port": 2224, "certs_info": { "cert_file" : "manager.crt", "key_file": "manager.key", "key_passphrase": "", "verify_cert_file": "cert.pem" }, "db_info": { "host": "", "username": "", "password": "", "database": "" }, "io_thread_nums": 1, "comp_thread_nums": 1, "log_level": 0, "transfer_body_buffer_size": 81920 } ``` 其中需要调整的配置有,其余建议不动: `listen_port`: FullNodes 监听端口,用于 FullNode 连接 `certs_info`: 根据实际文件名调整 `db_info`: 根据数据库实际情况调整 `io_thread_nums`: IO 线程数量,根据 CPU 核心数酌情调整 `comp_thread_nums`: 计算任务线程数量,根据 CPU 核心数酌情调整 ## 矿机在线 API `GET` `http://ip_of_manager:8080/online` ## 注意事项 stdout 有部分debug信息输出,请忽略 建议使用 systemd 等管理工具配置自动重启。 # 数据库 ## 字段 表名和字段名足够清晰明确,请直接查看数据库表结构。 ## 注意事项 表`share_logs` 建议定期清理,此次提供一个"每日将 `share_logs` 重命名为日期命名的 `share_logs` 表并新建 `share_logs` 表"的脚本,建议使用 systemd-timer 每日定时执行 ``` bash #!/bin/bash set -x date=$(date '+%Y_%m_%d') echo $date mysql -h {host} -u {username} -p'{passwrod}' -D {database name} -e "rename table sharelogs to sharelogs_$date; CREATE TABLE sharelogs LIKE sharelogs_$date;" echo "done." ``` # 注意事项 请关注数据库、Manager、Stratum 的运行情况,酌情扩容或排查问题,从以往经验来看,数据库出问题的概率较大。 # Kernel 参数调整建议 `/etc/sysctl.conf` ``` net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 net.ipv4.tcp_fin_timeout = 10 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_window_scaling = 0 net.ipv4.tcp_sack = 0 net.core.netdev_max_backlog = 30000 net.ipv4.tcp_no_metrics_save=1 net.core.somaxconn = 262144 net.ipv4.tcp_syncookies = 0 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 2 ``` `/etc/security/limits.conf` ``` root soft nofile 262144 root hard nofile 262144 * soft nofile 262144 * hard nofile 262144 ```