프라이빗 이더리움을 운영중에 문제가 되는것 중에 하나가 pending이다. pending이 저절로 풀리면 다행인데 안풀릴때가 있다. 머 언제가는 풀릴지 모르지만 프라이빗으로 운영중인 경우 펜딩이 발생하면 블록에서 조회가 안되므로 문제가 된다.
이런 경우에 현재 블록에서 펜딩이 일어나고 있는 트랜잭션이 몇개인지 확인해 보는 방법을 알아보자.
우선 attach로 접속하는 경우에는
> eth.pendingTransactions
명령으로 펜딩된 트랜잭션들을 볼 수 있다. 또는
> eth.pendingTransactions.length
로 펜딩중인 트랜잭션의 갯수를 확인할 수 있다.
그런데 이 명령어가 rpc에서는 안된다는 것이다. rpc로 확인하는 경우에는 다른 방법으로 해야한다.
nodejs로 파일을 만들어 보자
var Web3 = require("web3");
var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
web3.eth.getBlock(
"pending",
function (error, block) {
var pl=block.transactions.length;
if(pl>1){
console.log(pl);
console.log("pending...");
}
});
이렇게 만들어서 노드로 실행해보면 펜딩중인 트랜잭션의 갯수를 알 수 있다. pendingTransactions인줄 알고 새빠지게 했는데 안돼서 개고생했다.
여기서 중요한건 저 ip이다. 저기 적혀져 있는 ip의 블록체인만 체크한다. 전체 블록체인은 체크하지 않는다. 만약 3대의 블록체인 서버를 운영중이라면 각 서버마다 저 파일을 만들어서 체크해야한다.
펜딩이 생기면 geth를 재시작하거나 하는 방법으로 pending을 풀 수 있다. 메인넷이나 테스트넷에서는 이런게 필요없겠지만 대사를 위해 프라이빗 네트워크를 구성하는 경우에는 pending이 문제가 될 수도 있다.
'블록체인' 카테고리의 다른 글
이더리움 poa 설치 (0) | 2019.06.27 |
---|---|
블록체인 모니터링툴 eth-netstats 설치 (0) | 2019.06.25 |
geth를 백그라운드에서 돌리면서 채굴을 하고 싶다면... (0) | 2019.05.16 |
CentOS7에 카프카와 주키퍼 설치하기 2탄 (0) | 2019.05.02 |
CentOS7에 카프카와 주키퍼 설치하기 1탄 (0) | 2019.05.02 |