종종 EN에서 txpool is full 에러 메세지가 뜹니다

안녕하세요. 현재 klaytn EN v1.6.3 를 운영하고 있습니다.

최근에 한번씩 txpool is full 에러 메세지가 뜨고 있어서 질문을 올리게 되었습니다.

검색을 통해 해당 댓글을 먼저 확인했습니다. EN이 가지고 있는 tx를 전파하여 블럭을 만드는 속도보다, 외부에서 들어오는 tx 갯수가 많아서 txpool이 가득 찼고 해당 에러가 발생할 수 있다고 이해하였습니다.

관련해서 궁금한 것이 있습니다.

  1. 우선 txpool is full 에러 메세지가 발생하는 원인을 제가 올바르게 이해한 것이 맞을까요?
  2. txpool 사이즈를 설정에서 바꿀 수 있는 방법이 있을까요? (TXPOOL_EXEC_SLOTS_ALL, TXPOOL_NONEXEC_SLOTS_ALL, … 와 같은 환경변수를 확인했는데 먼저 이 값을 바꾸는게 맞는지 모르겠고 맞다면 어떤 값을 바꿔야할지 모르겠습니다.)
  3. tx를 쏘는 노드 클라이언트 단에서 에러 핸들링을 할 수 있지만 노드 쪽에서도 에러가 발생하지 않을 방법을 찾고 있습니다. 생각하기에 EN 노드를 스케일링 할 수 있다면 해당 문제를 해결할 수 있을 것으로 보입니다. 클라이언트들의 tx들을 노드들이 나눠서 가질 것이기 때문입니다. 혹시 맞을까요?

문의 주셔서 감사합니다.^^

  1. 네 맞습니다. 블록체인이 처리하는 트렌젝션보다 더 많은 트렌젝션이 유입되면 그만큼 TxPool이 가득차서 더이상 추가 트렌젝션을 받지 못하도록 에러처리하고있습니다.

  2. 해당 값을 이용해서 사이즈 조절이 가능합니다

  3. EN을 여러개를 띄우시고 각 EN들은 연결하지 않는다면 독립적으로 TxPool을 가져가실수 있습니다.

감사합니다.

@Ethan
답변 감사합니다.

3번에 대한 답변에서 '연결하지 않는다면’이라함은 EN 끼리 피어로 등록하지 않는다는 말씀이실까요?

네 맞습니다. EN간에도 Tx를 전파하기 때문에 서로 Tx를 공유할수도 있어서 연결을 하지 않는다면 Tx를 공유 못하니 다른 외부 EN과 PN으로만 전파를 하여 원하시는데로 분리하여 사용 가능하십니다.^^

2 Likes

안녕하세요.
말씀하신대로 EN끼리 피어로 등록하지 않으려면 EN 블로킹을 어떤 설정으로 해야하는지 궁금합니다.
그리고 EN-A와 EN-B를 직접 피어 연결을 하지 않더라도 다른 노드를 통해서 결국 EN-A에서 발생시킨 트랜잭션이 EN-B의 Tx풀에 들어오는 것은 아닌지요?