---
# System prepended metadata

title: MASS 矿池维护指北

---

# 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
```