EN 빠른 동기화 데이터 다운 후 남은 block을 동기화 할때 속도가 느립니다

안녕하세요.
EN 설치 관련 문서를 익고 개인 서버에 EN을 설치하였습니다.
kend start로 하는 동기화 속도가 느려 가장 최신 데이터를 받은 후 아래와 같이 kend start를 다시 실행하였습니다.
-kend start로 동기화한 결과

현재 블럭에 비하여 아직 받지 못한 block이 3일정도 데이터량이 남은 것으로 확인이 되는데요.
문제는 동기화 속도가 너무 느립니다.
kend start를 처음에 block이 0일때에는 속도가 elapsed time이 6~8ms 정도였는데 현재는 너무 변화량이 큽니다.
혹시 제가 설정을 잘못 하거나 예상되는 문제점이 있는지 원래 이러한 현상이 나타나는지 알고 싶습니다.

아래는 제가 설정한 conf/kend_conf파일입니다

# Configuration file for the kend

# cypress, baobab is only available if you don't specify NETWORK_ID.
NETWORK="cypress"
# if you specify NETWORK_ID, a private network is created.
NETWORK_ID=

PORT=32323

SERVER_TYPE="fasthttp"
SYNCMODE="full"
VERBOSITY=3
MAXCONNECTIONS=10

# txpool options setting
TXPOOL_EXEC_SLOTS_ALL=4096
TXPOOL_NONEXEC_SLOTS_ALL=4096
TXPOOL_EXEC_SLOTS_ACCOUNT=4096
TXPOOL_NONEXEC_SLOTS_ACCOUNT=4096
TXPOOL_LIFE_TIME="30m"

# rpc options setting
RPC_ENABLE=1 # if this is set, the following options will be used
RPC_API="klay" # available apis: admin,debug,klay,miner,net,personal,rpc,txpool,web3
RPC_PORT=8551
RPC_ADDR="0.0.0.0"
RPC_CORSDOMAIN="*"
RPC_VHOSTS="*"

# ws options setting
WS_ENABLE=1 # if this is set, the following options will be used
WS_API="klay" # available apis: admin,debug,klay,miner,net,personal,rpc,txpool,web3
WS_ADDR="0.0.0.0"
WS_PORT=8552
WS_ORIGINS="*"

# service chain options setting
SC_MAIN_BRIDGE=0 # if this is set, the following options will be used.
SC_MAIN_BRIDGE_PORT=50505
SC_MAIN_BRIDGE_INDEXING=0  # this option will be deprecated.

# Setting 1 is to enable options, otherwise disabled.
AUTO_RESTART=0
METRICS=1
PROMETHEUS=1
DB_NO_PARALLEL_WRITE=0
MULTICHANNEL=1
SUBPORT=$((PORT + 1)) # used for multi channel option

# discover options
NO_DISCOVER=0 # setting 1 to disable discovery
BOOTNODES=""

# Raw options e.g) "--txpool.nolocals"
ADDITIONAL=""

DATA_DIR="/data2/seongyeop/data"
LOG_DIR=$DATA_DIR/logs

DATA_DIR만 tar unzip한 경로로 바꾸었습니다.

linux docker 위에서 실행 중 이며, 스펙은 아래와 같습니다.
docker run할시 docker의 port는 특정 port(8900)만 열어둔 상황입니다.
cpu : 32, ram : 256g, 네트워크와 디스크 대역폭은 정확히 모르겠습니다.
저장 공간은 충분하며 wget,curl로 historical chain diata를 받을때 최대 30M/S 까지 확인이 되었습니다.

감사합니다.

docker 문제인가 싶어 docker 환경 밖에서 kend start를 해보았지만 여전히 속도가 너무 느립니다.


새로운 블록부터 받으면 다음과 같이 합리적인 속도가 나옵니다.

net.peercount가 5로 나오는데 정상일까요?

debug.startWarmUp()

명령어는 호전되는 것 같지 않습니다.

admin.peers

로 확인시 최신 블록이 업데이트 되어있는 5개의 node가 검출됩니다.

위에서 ssd 사용이 필수라고 언급되어있는데, 용량 문제로 인하여 7TB HDD를 사용하고 있습니다. 해당 문제일 수도 있을까요?

@poey

안녕하세요.
HDD를 사용하시면 안됩니다. CPU와 Ram 이외에도 요구사항을 잘 살펴보시면 IOPS도 그중에 있습니다.

SSD를 사용하셔서 다시 시도해보시길 바랍니다.

감사합니다.

네 감사합니다.
혹시 genesis block 에서는 높은 속도가 나오는데, 80,000,000블럭부터는 느린 이유가 있을까요? log 에서 processTxs가 유독 느리던데 … processTxs가 어떤 부분을 처리하는건지 궁금합니다. 단지 totalWrite는 속도가 괜찮게 나와서요.
네트워크 대역폭이라던지, 이런 부분이 문제임을 확인할 수 있는 방법이 있을지요?

좀 돌리다 보니 아래와 같이 평균 1블럭당 1sec의 속도는 나오는 것 같습니다. 다만 동기화 하기에는 3일 정도 밀린 상태이고요.

@poey
우선 블록과 트랜잭션에 대해 학습해보시면 좋을 거 같습니다.
Genesis Block 처리가 빨랐던 이유는 제네시스 블록에는 트랜잭션들이 담기지 않아서 입니다.
processTxs는 트랜잭션들을 처리하는데 걸린 시간을 뜻합니다.

자세한 내용은 소스코드와 관련 문서들로 확인해보시면 좋을 거 같습니다.
우선 디스크는 SSD로 변경해주시구요.

감사합니다.

2개의 좋아요

hdd에서 ssd로 변경 후 정상적으로(빠른 속도로) 동기화 되는 것을 확인하였습니다.
감사합니다.

2개의 좋아요