Ich laufe geth -rpc
und node
interagiere direkt mit der Blockchain. Beim Ausführen einer großen Anzahl von Anfragen ist mir folgender Fehler aufgefallen:
http: Accept error: accept tcp 127.0.0.1:8545: accept: too many open files; retrying in 5ms
Wie kann ich geth konfigurieren, um mehr Verbindungen zu verarbeiten? Mein Code ist:
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);
});
}
Wenn Sie Ubuntu oder eine ähnliche Linux-Variante verwenden, beträgt die (weiche) Begrenzung pro Benutzer für die Anzahl der Dateideskriptoren 1024
.
$ ulimit -n
1024
Sie haben mehrere Möglichkeiten, um den angezeigten Fehler zu umgehen, einschließlich der Erhöhung sowohl der weichen als auch der harten Limits für den betreffenden Benutzer.
Einzelheiten dazu finden Sie in einer früheren Antwort .
(Möglicherweise finden Sie auch diesen Thread nützlich: Allgemeine nützliche JavaScript-Schnipsel für geth )
John Little