okx / exchain

⛓️ EVM & Wasm $ IBC-compatible, OKTC is a L1 blockchain network built on top of Cosmos SDK that aims for optimal interoperability and performance ✨
https://www.okx.com/oktc
Other
573 stars 182 forks source link

OKC的内存管理做得太差了,交易不多,却占用大量的内存。希望改善! #2935

Closed qings2329 closed 1 year ago

qings2329 commented 1 year ago

Summary

Problem Definition

Proposal


For Admin Use

giskook commented 1 year ago

Hi @qings2329 ,

感谢您的问题,OKC可以通过调整参数对内存进行约束。在OKC启动时,您可以根据需要调整如下参数,以减少内存使用:

OKC同时提供了使用tcmalloc来优化内存的编译选项 文档介绍

cwbhhjl commented 1 year ago

请问有没有更具体的信息,比如哪个时段或者高度,什么配置的机器占用了多少内存?

qings2329 commented 1 year ago

请问有没有更具体的信息,比如哪个时段或者高度,什么配置的机器占用了多少内存?

64G 内存的服务器,OKC的进程占了50几个G,而且慢慢的越占越多,运行一个月左右就被系统强杀,造成区块数据丢失;又得调用修复区块的命令,修复完之后才能正常启动。 这样的情况已经遇到两次。

cwbhhjl commented 1 year ago

@qings2329 好的,我们自己的validator节点也全都是64G的机器,目前还没出现过这种问题,后面关注一下

fylsan3 commented 1 year ago
root@172-20-192-90:~# systemctl status okex
● okex.service - okex chain service
     Loaded: loaded (/etc/systemd/system/okex.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-08-15 22:34:17 UTC; 5 days ago
   Main PID: 1270948 (sh)
      Tasks: 960 (limit: 629145)
     Memory: 1.5T
        CPU: 2month 2d 19h 38min 27.806s
     CGroup: /system.slice/okex.service
             ├─1270948 /bin/sh /data/okex/start.sh
             └─1270949 /data/okex/exchaind start --pruning=nothing --iavl-enable-async-commit=false --fast-query=false --home /data/okex/data --trace --rp>

Aug 15 22:34:17 172-20-192-90 systemd[1]: Started okex chain service.

我2T的机器还经常启动不起来,有办法优化吗? 这是我的启动命令 /data/okex/exchaind start \ --pruning=nothing \ --iavl-enable-async-commit=false \ --fast-query=false \ --home /data/okex/data \ --trace --rpc.unsafe \ --debug-api=true \ --enable-tx-pool \ --rpc.enable-monitor \ --rpc.enable-multi-call \ --iavl-enable-async-commit=false \ --iavl-cache-size=5000000 \ --iavl-fast-storage-cache-size=5000000 \ --rocksdb.opts max_open_files=2048 \ --rest.laddr tcp://0.0.0.0:8545 >/data/okex/okex.log

giskook commented 1 year ago

我2T的机器还经常启动不起来,有办法优化吗? 这是我的启动命令 /data/okex/exchaind start --pruning=nothing --iavl-enable-async-commit=false --fast-query=false --home /data/okex/data --trace --rpc.unsafe --debug-api=true --enable-tx-pool --rpc.enable-monitor --rpc.enable-multi-call --iavl-enable-async-commit=false --iavl-cache-size=5000000 --iavl-fast-storage-cache-size=5000000 --rocksdb.opts max_open_files=2048 --rest.laddr tcp://0.0.0.0:8545 >/data/okex/okex.log

您方便提供具体的报错信息吗 ? 2T内存都给exchaind用吗? 方便的话您可以执行下dmesg -T | grep exchaind看下是否是因为OOM的导致的, 另外归档节点启动的时候,确实会很慢,启动的过程时间会比较长大概30分钟

fylsan3 commented 1 year ago
[Sat Jul 29 12:05:10 2023] exchaind invoked oom-killer: gfp_mask=0x1100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
[Sat Jul 29 12:05:10 2023] CPU: 144 PID: 1806118 Comm: exchaind Not tainted 5.15.0-60-generic #66-Ubuntu
[Sat Jul 29 12:05:10 2023] [1739339]     0 1739339 102005245 85878035 748224512        0             0 exchaind
[Wed Aug  2 15:34:42 2023] exchaind invoked oom-killer: gfp_mask=0x1100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
[Wed Aug  2 15:34:42 2023] CPU: 129 PID: 1806125 Comm: exchaind Not tainted 5.15.0-60-generic #66-Ubuntu
[Wed Aug  2 15:34:42 2023] [1739339]     0 1739339 318736224 303895167 2473668608        0             0 exchaind
[Wed Aug  2 15:34:42 2023] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=okex.service,mems_allowed=0-7,global_oom,task_memcg=/system.slice/okex.service,task=exchaind,pid=1739339,uid=0
[Wed Aug  2 15:34:42 2023] Out of memory: Killed process 1739339 (exchaind) total-vm:1274944896kB, anon-rss:1215580668kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:2415692kB oom_score_adj:0
[Wed Aug  2 15:36:00 2023] oom_reaper: reaped process 1739339 (exchaind), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
root@172-20-192-99:/data# free -g
               total        used        free      shared  buff/cache   available
Mem:            2015         774         223           0        1018        1230
Swap:              0           0           0

/data/okex/exchaind start \
--pruning=nothing \
--iavl-enable-async-commit=false \
--fast-query=false \
--home /data/okex/data  \
--trace --rpc.unsafe \
--debug-api=true \
--enable-tx-pool \
--rpc.enable-monitor \
--rpc.enable-multi-call \
--iavl-enable-async-commit=false \
--rocksdb.opts max_open_files=2048 \
--commit-gap-height 20 \
--iavl-cache-size=2560000 \
--iavl-fast-storage-cache-size=2560000 \
--rest.laddr tcp://0.0.0.0:8545 >/data/okex/okex.log

我看了上面提供的优化建议尝试更改了一些参数,目前会报OOM,并且启动不了。一直会自动重启。

fylsan3 commented 1 year ago

我有很多节点都是因为跑的时间太长了报oom挂掉,所以目前我已经不知道该怎么做了

giskook commented 1 year ago

自动重启的报错内容是什么啊?是不是因为需要repair-state?

giskook commented 1 year ago

您目前用的哪个版本?

fylsan3 commented 1 year ago

./exchaind version v1.7.0 没有看到报错日志,我是通过systemctl status okex命令发现它在重启

fylsan3 commented 1 year ago

如果可以的话我愿意被远程操控来帮助排查问题。

giskook commented 1 year ago

如果可以的话我愿意被远程操控来帮助排查问题。

好的,您把微信发到我的邮箱吧,我加您 zhangkai.gis@163.com