Estoy corriendo geth -rpc
y node
para interactuar directamente con la cadena de bloques. Al ejecutar una gran cantidad de solicitudes, noté el siguiente error:
http: Accept error: accept tcp 127.0.0.1:8545: accept: too many open files; retrying in 5ms
¿Cómo puedo configurar geth para manejar más conexiones? mi código es:
var Web3 = require("web3")
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
// first
txs = [];
// second
for (i = 0; i < 100; i++) {
web3.eth.getBlock(4000000+i, function(error, block) {
if(!error) {
for (j = 0; j < block.transactions.length; j++) {
web3.eth.getTransaction(block.transactions[j], function(error, transaction) {
if(!error) {
txs.push({block: transaction.blockNumber, from: transaction.from, to: transaction.to, value: transaction.value.toNumber(), id: block.transactions.indexOf(transaction.hash)})
}
else
console.error(error);
});
}
}
else
console.error(error);
});
}
Si está ejecutando Ubuntu o una versión similar de Linux, entonces el límite por usuario (suave) en la cantidad de descriptores de archivos es 1024
.
$ ulimit -n
1024
Tiene varias opciones para sortear el error que está viendo, incluido el aumento de los límites flexibles y estrictos para el usuario en cuestión.
Hay detalles de cómo hacer esto en una respuesta anterior .
(También puede encontrar útil este hilo: Fragmentos de JavaScript útiles comunes para geth )
Juan pequeño