http: Fehler akzeptieren: TCP akzeptieren 127.0.0.1:8545: akzeptieren: zu viele offene Dateien; Wiederholung in 5ms

Ich laufe geth -rpcund nodeinteragiere 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);
    });
}

Antworten (1)

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 )

Es ist zumindest bis Version 1.8.13-stable-225171a4 nicht möglich, die Anzahl der geöffneten Dateien auf mehr als 2048 zu erhöhen. Sie können sie in den Unix-System-, Benutzer- oder Prozessgrenzen auf eine beliebige Anzahl erhöhen, aber geth begrenzt es wieder auf 2048. Wir leiden ständig unter dem Fehler zu viele offene Dateien, und soweit wir wissen, gibt es keine andere Lösung oder Problemumgehung, als die Grenzen in einer ständigen Schleife im Hintergrund zu ändern.