1. Solana系统调优
基于centos系列
1.1 磁盘分区
由于后期区块太多,磁盘占用太大,磁盘建议设置成GPT分区
bash
# fdisk -l
root@solana:~# parted /dev/vdb # 开始分区
mklabel gpt # 将默认的MBR分区格式转为GPT分区格式
mkpart primary 1 100% # 划分一个主分区,并设置分区的开始位置和结束位置
align-check optimal 1 # 检查分区是否对齐
# 1 aligned # 运行结果如此行所示
print # 查看分区表
quit # 退出Parted工具
# partprobe
# mkfs -t ext4 /dev/vdb1
# mkdir /data
# mount /dev/vdb1 /data/
# df -h
# cp /etc/fstab /etc/fstab.bak
# echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /data ext4 defaults 0 0 >> /etc/fstab
# fdisk -l
root@solana:~# parted /dev/vdb # 开始分区
mklabel gpt # 将默认的MBR分区格式转为GPT分区格式
mkpart primary 1 100% # 划分一个主分区,并设置分区的开始位置和结束位置
align-check optimal 1 # 检查分区是否对齐
# 1 aligned # 运行结果如此行所示
print # 查看分区表
quit # 退出Parted工具
# partprobe
# mkfs -t ext4 /dev/vdb1
# mkdir /data
# mount /dev/vdb1 /data/
# df -h
# cp /etc/fstab /etc/fstab.bak
# echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /data ext4 defaults 0 0 >> /etc/fstab
1.2 增加 UDP 缓冲区
bash
cat >/etc/sysctl.d/20-solana-udp-buffers.conf <<EOF
# Increase UDP buffer size
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728
# Increase memory mapped files limit
vm.max_map_count = 1000000
# Increase number of allowed open file descriptors
fs.nr_open = 1000000
EOF
cat >/etc/sysctl.d/20-solana-udp-buffers.conf <<EOF
# Increase UDP buffer size
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728
# Increase memory mapped files limit
vm.max_map_count = 1000000
# Increase number of allowed open file descriptors
fs.nr_open = 1000000
EOF
- 生效
bash
sysctl -p /etc/sysctl.d/20-solana-udp-buffers.conf
sysctl -p /etc/sysctl.d/20-solana-udp-buffers.conf
1.3 增加内存映射文件限制
bash
cat >/etc/sysctl.d/20-solana-mmaps.conf <<EOF
# Increase memory mapped files limit
vm.max_map_count = 1000000
EOF
cat >/etc/sysctl.d/20-solana-mmaps.conf <<EOF
# Increase memory mapped files limit
vm.max_map_count = 1000000
EOF
- 生效
bash
sysctl -p /etc/sysctl.d/20-solana-mmaps.conf
sysctl -p /etc/sysctl.d/20-solana-mmaps.conf
1.4 systemd
在 /etc/systemd/system.conf 文件的 [Manager] 部分添加如下内容:
bash
DefaultLimitNOFILE=1000000
DefaultLimitNOFILE=1000000
- 重新加载配置
bash
systemctl daemon-reload
systemctl daemon-reload
1.5 limit
1.增加流程文件描述器的计数上限
bash
cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1000000
EOF
cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1000000
EOF
2.修改最大文件数
bash
# vim /etc/security/limits.conf
* soft nofile 700000
* hard nofile 700000
* soft nproc 700000
* hard nproc 700000
# vim /etc/security/limits.conf
* soft nofile 700000
* hard nofile 700000
* soft nproc 700000
* hard nproc 700000
1.6 配置系统日志
bash
# vim /etc/rsyslog.d/50-default.conf
# 把下面这几行的注释去掉
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
# vim /etc/rsyslog.d/50-default.conf
# 把下面这几行的注释去掉
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
- 重启服务
bash
systemctl restart rsyslog.service
systemctl restart rsyslog.service
❌ 注意
最后重启系统防止不生效
1.7 时间服务
较大的系统时钟漂移会阻止节点正确参与 Solana 的 gossip 协议
bash
#保证是utc时间
timedatectl
#保证是utc时间
timedatectl