Dokumentasi: erigon.gitbook.io Blog: erigon.substack.com Twitter: x.com/ErigonEth
Erigon adalah implementasi Ethereum (lapisan eksekusi dengan lapisan konsensus yang dapat disematkan), pada batas efisiensi. Arsipkan Node secara default.
erigon
caplin
beaconAPI
shared
other
systemd
htop
menunjukkan penggunaan memori yang salah Default penting : Erigon adalah Node Arsip secara default: gunakan --prune.mode
jika perlu membuatnya lebih kecil (tidak boleh diubah setelah permulaan pertama)
In-depth links are marked by the microscope sign (?)
RAM: >=32GB, Golang >= 1,22; GCC 10+ atau Dentang; Di Linux: kernel > v4. Arsitektur 64-bit.
SSD atau NVMe. Jangan rekomendasikan HDD - pada HDD Erigon akan selalu berada di N blok di belakang ujung rantai, tetapi tidak ketinggalan. Ingatlah bahwa kinerja SSD menurun ketika mendekati kapasitasnya. CloudDrives (seperti gp3): Eksekusi Blok lambat di drive jaringan cloud
? Lebih detail tentang ukuran datadir Erigon3
? Lebih detail tentang jenis data apa yang disimpan di sini
Catatan Rilis dan Biner
Bangun rilis terbaru (ini akan cocok untuk sebagian besar pengguna yang hanya ingin menjalankan sebuah node):
git clone --branch release/ < x.xx > --single-branch https://github.com/erigontech/erigon.git
cd erigon
make erigon
./build/bin/erigon
Tingkatkan kecepatan unduh sebesar --torrent.download.rate=20mb
. ? See Downloader docs
Gunakan --datadir
untuk memilih tempat menyimpan data.
Gunakan --chain=gnosis
untuk Gnosis Chain, --chain=bor-mainnet
untuk Polygon Mainnet, dan --chain=amoy
untuk Polygon Amoy. Untuk Gnosis Chain Anda memerlukan klien Lapisan Konsensus bersama Erigon (https://docs.gnosischain.com/category/step--3---run-consensus-client).
Menjalankan make help
akan mencantumkan dan menjelaskan perintah praktis yang tersedia di Makefile.
datadir
chaindata # "Recently-updated Latest State", "Recent History", "Recent Blocks"
snapshots # contains `.seg` files - it's old blocks
domain # Latest State
history # Historical values
idx # InvertedIndices: can search/filtering/union/intersect them - to find historical data. like eth_getLogs or trace_transaction
accessors # Additional (generated) indices of history - have "random-touch" read-pattern. They can serve only `Get` requests (no search/filters).
txpool # pending transactions. safe to remove.
nodes # p2p peers. safe to remove.
temp # used to sort data bigger than RAM. can grow to ~100gb. cleaned at startup.
# There is 4 domains: account, storage, code, commitment
Jika Anda mampu menyimpan datadir pada 1 nvme-raid - bagus. Jika tidak bisa - dimungkinkan untuk menyimpan riwayat di drive murah.
# place (or ln -s) `datadir` on slow disk. link some sub-folders to fast (low-latency) disk.
# Example: what need link to fast disk to speedup execution
datadir
chaindata # link to fast disk
snapshots
domain # link to fast disk
history
idx
accessors
temp # buffers to sort data >> RAM. sequential-buffered IO - is slow-disk-friendly
# Example: how to speedup history access:
# - go step-by-step - first try store `accessors` on fast disk
# - if speed is not good enough: `idx`
# - if still not enough: `history`
# eth-mainnet - archive - April 2024
du -hsc /erigon/ *
6G /erigon/caplin
50G /erigon/chaindata
1.8T /erigon/snapshots
1.9T total
du -hsc /erigon/snapshots/ *
100G /erigon/snapshots/accessor
240G /erigon/snapshots/domain
260G /erigon/snapshots/history
410G /erigon/snapshots/idx
1.7T /erigon/snapshots
# bor-mainnet - archive - Jun 2024
du -hsc /erigon/ *
160M /erigon/bor
50G /erigon/chaindata
3.7T /erigon/snapshots
3.8T total
du -hsc /erigon/snapshots/ *
260G /erigon-data/snapshots/accessor
850G /erigon-data/snapshots/domain
650G /erigon-data/snapshots/history
1.4T /erigon-data/snapshots/idx
4.1T /erigon/snapshots
debug_getModifiedAccountsByNumber
kembalikan--internalcl
diaktifkan secara default. untuk menonaktifkan penggunaan --externalcl
.chaindata
kurang dari 15gb
. Tidak apa-apa untuk rm -rf chaindata
. (untuk mencegah pertumbuhan: rekomendasikan --batchSize <= 1G
)--prune
flags berubah : lihat --prune.mode
(default: archive
, full: full
, EIP-4444: minimal
)--sync.loop.block.limit=5_000
diaktifkan secara defaultBendera:
verbosity
log.console.verbosity
(mengganti alias untuk verbosity
)log.json
log.console.json
(alias untuk log.json
)log.dir.path
log.dir.prefix
log.dir.verbosity
log.dir.json
Untuk login hanya ke stdout/stderr, flag --verbosity
(atau log.console.verbosity
) dapat digunakan untuk memberikan nilai int yang menentukan level log output tertinggi:
LvlCrit = 0
LvlError = 1
LvlWarn = 2
LvlInfo = 3
LvlDebug = 4
LvlTrace = 5
Untuk mengatur direktori keluaran log yang akan dikumpulkan pada disk, silakan atur --log.dir.path
Jika Anda ingin mengubah nama file yang dihasilkan dari erigon
Anda juga harus mengatur tanda --log.dir.prefix
ke nama alternatif. Flag --log.dir.verbosity
juga tersedia untuk mengontrol verbositas logging ini, dengan nilai int yang sama seperti di atas, atau nilai string misalnya 'debug' atau 'info'. Verbositas default adalah 'debug' (4), untuk pencatatan disk.
Format log dapat diatur ke json dengan menggunakan flag boolean log.json
atau log.console.json
, atau untuk output disk --log.dir.json
.
Erigon secara default adalah solusi "semua dalam satu biner", tetapi TxPool mungkin dimulai sebagai proses terpisah. Hal yang sama berlaku tentang: lapisan JSON RPC (RPCDaemon), lapisan p2p (Sentry), lapisan unduhan riwayat (Pengunduh), konsensus. Jangan memulai layanan sebagai proses terpisah kecuali Anda memiliki alasan yang jelas: pembatasan sumber daya, penskalaan, ganti dengan implementasi Anda sendiri, keamanan. Cara memulai layanan Erigon sebagai proses terpisah, lihat di docker-compose.yml. Setiap layanan memiliki file ./cmd/*/README.md
sendiri. Blog Erigon.
Konsensus bawaan untuk Ethereum Mainnet, Sepolia, Holesky, Gnosis. Untuk menggunakan Lapisan Konsensus eksternal: --externalcl
.
Jika Anda ingin mencoba Erigon: pilihan yang baik adalah mulai menyinkronkan salah satu testnet publik, Holesky (atau Amoy). Ini disinkronkan lebih cepat, dan tidak memakan banyak ruang disk:
git clone https://github.com/erigontech/erigon.git
cd erigon
make erigon
./build/bin/erigon --datadir= < your_datadir > --chain=holesky --prune.mode=full
Harap perhatikan opsi --datadir
yang memungkinkan Anda menyimpan file Erigon di lokasi non-default. Nama direktori --datadir
tidak harus sama dengan nama rantai di --chain
.
Produksi blok didukung penuh untuk Ethereum & Gnosis Chain. Ini masih bersifat eksperimental untuk Polygon.
Anda dapat mengatur flag Erigon melalui file konfigurasi TOML dengan flag --config
. Flag yang diatur dalam file konfigurasi dapat ditimpa dengan menulis flag secara langsung pada baris perintah Erigon
./build/bin/erigon --config ./config.toml --chain=sepolia
Dengan asumsi kita memiliki chain : "mainnet"
di file konfigurasi kita, dengan menambahkan --chain=sepolia
memungkinkan penimpaan flag di dalam file konfigurasi toml dan menyetel rantai ke sepolia
datadir = ' your datadir '
port = 1111
chain = " mainnet "
http = true
"private.api.addr" = " localhost:9090 "
"http.api" = [ " eth " , " debug " , " net " ]
Erigon dapat digunakan sebagai Execution Layer (EL) untuk klien Consensus Layer (CL). Konfigurasi defaultnya oke.
Jika klien CL Anda menggunakan perangkat yang berbeda, tambahkan --authrpc.addr 0.0.0.0
(Engine API mendengarkan localhost secara default) serta --authrpc.vhosts
di mana
adalah host sumber Anda atau any
.
Untuk membuat koneksi aman antara Lapisan Konsensus dan Lapisan Eksekusi, kunci rahasia JWT dibuat secara otomatis.
Kunci rahasia JWT akan ada di datadir secara default dengan nama jwt.hex
dan jalurnya dapat ditentukan dengan flag --authrpc.jwtsecret
.
Informasi ini juga perlu ditentukan di Lapisan Konsensus agar koneksi berhasil. Informasi lebih lanjut dapat ditemukan di sini.
Setelah Erigon berjalan, Anda perlu mengarahkan klien CL Anda ke
, di mana
adalah localhost
atau alamat IP perangkat yang menjalankan Erigon, dan juga menunjuk ke jalur rahasia JWT yang dibuat oleh Erigon.
Caplin adalah Klien Konsensus validasi lengkap seperti Prysm, Lighthouse, Teku, Nimbus, dan Lodestar. Tujuannya adalah:
Alasan utama mengapa Lapisan Konsensus baru dikembangkan adalah untuk bereksperimen dengan kemungkinan manfaat yang dapat diperoleh darinya. Misalnya, The Engine API tidak bekerja dengan baik dengan Erigon. Engine API mengirimkan data satu blok pada satu waktu, yang tidak sesuai dengan cara kerja Erigon. Erigon dirancang untuk menangani banyak blok secara bersamaan dan perlu menyortir dan memproses data secara efisien. Oleh karena itu, akan lebih baik bagi Erigon untuk menangani blok tersebut secara mandiri daripada mengandalkan API Engine.
Caplin diaktifkan secara default. untuk menonaktifkannya dan mengaktifkan Engine API, gunakan tanda --externalcl
. sejak saat itu, Lapisan Konsensus eksternal tidak diperlukan lagi.
Caplin juga memiliki mode arsip untuk negara bagian dan blok bersejarah. itu dapat diaktifkan melalui flag --caplin.archive
. Untuk mengaktifkan Beacon API caplin, flag --beacon.api=
harus ditambahkan. misalnya: --beacon.api=beacon,builder,config,debug,node,validator,lighthouse
akan mengaktifkan semua titik akhir. **CATATAN: Caplin belum siap untuk staking sehingga titik akhir agregasi masih harus diterapkan. Selain itu, mengaktifkan Beacon API akan menghasilkan penggunaan RAM 6 GB lebih tinggi.
Tentukan 6 tanda untuk menghindari konflik: --datadir --port --http.port --authrpc.port --torrent.port --private.api.addr
. Contoh beberapa rantai pada mesin yang sama:
# mainnet
./build/bin/erigon --datadir="" --chain=mainnet --port=30303 --http.port=8545 --authrpc.port=8551 --torrent.port=42069 --private.api.addr=127.0.0.1:9090 --http --ws --http.api=eth,debug,net,trace,web3,erigon
# sepolia
./build/bin/erigon --datadir="" --chain=sepolia --port=30304 --http.port=8546 --authrpc.port=8552 --torrent.port=42068 --private.api.addr=127.0.0.1:9091 --http --ws --http.api=eth,debug,net,trace,web3,erigon
Kutip jalur Anda jika ada spasi.
? Detailed explanation is DEV_CHAIN.
Pada bandwidth jaringan yang bagus, EthereumMainnet FullNode disinkronkan dalam 3 jam: OtterSync dapat melakukan sinkronisasi
Penyimpanan KV datar. Erigon menggunakan database nilai kunci dan menyimpan akun dan penyimpanan dengan cara yang sederhana.
? See our detailed DB walkthrough here.
Pemrosesan awal . Untuk beberapa operasi, Erigon menggunakan file sementara untuk memproses data terlebih dahulu sebelum memasukkannya ke dalam DB utama. Hal ini mengurangi amplifikasi penulisan dan penyisipan DB menjadi lebih cepat.
? See our detailed ETL explanation here.
Keadaan biasa
Akun tunggal/percobaan negara bagian . Erigon menggunakan satu percobaan Merkle untuk akun dan penyimpanan.
? Staged Sync Readme
Sebagian besar komponen Erigon (txpool, rpcdaemon, snapshots downloader, sentry, ...) dapat bekerja di dalam Erigon dan sebagai proses independen di Server yang sama (atau Server lain). Contoh:
make erigon rpcdaemon
./build/bin/erigon --datadir=/my --http=false
# To run RPCDaemon as separated process: use same `--datadir` as Erigon
./build/bin/rpcdaemon --datadir=/my --http.api=eth,erigon,web3,net,debug,trace,txpool --ws
--rpc.batch.concurrency
, --rpc.batch.limit
, --db.read.concurrency
--http.compression
, --ws.compression
? See RPC-Daemon docs
docker compose up prometheus grafana
, dokumen terperinci.
# please use git branch name (or commit hash). don't use git tags
go mod edit -replace github.com/erigontech/erigon-lib=github.com/erigontech/erigon/erigon-lib@5498f854e44df5c8f0804ff4f0747c0dec3caad5
go get github.com/erigontech/erigon@main
go mod tidy
erigon
Komponen | Pelabuhan | Protokol | Tujuan | Harus Mengekspos |
---|---|---|---|---|
mesin | 9090 | TCP | Server gRPC | Pribadi |
mesin | 42069 | TCP & UDP | Sinkronisasi jepret (Bittorrent) | Publik |
mesin | 8551 | TCP | API Mesin (autentikasi JWT) | Pribadi |
penjaga | 30303 | TCP & UDP | eth/68 mengintip | Publik |
penjaga | 30304 | TCP & UDP | eth/67 mengintip | Publik |
penjaga | 9091 | TCP | Koneksi gRPC masuk | Pribadi |
rpcdaemon | 8545 | TCP | HTTP & WebSockets & GraphQL | Pribadi |
Biasanya, 30303 dan 30304 diekspos ke internet untuk mengizinkan koneksi peering masuk. 9090 hanya diekspos secara internal untuk rpcdaemon atau koneksi lainnya, (misalnya rpcdaemon -> erigon). Port 8551 (diautentikasi JWT) hanya diekspos secara internal untuk kueri Engine API JSON-RPC dari node Lapisan Konsensus.
caplin
Komponen | Pelabuhan | Protokol | Tujuan | Harus Mengekspos |
---|---|---|---|---|
penjaga | 4000 | UDP | Mengintip | Publik |
penjaga | 4001 | TCP | Mengintip | Publik |
Untuk mengkonfigurasi port, gunakan:
--caplin.discovery.addr value Address for Caplin DISCV5 protocol (default: "127.0.0.1")
--caplin.discovery.port value Port for Caplin DISCV5 protocol (default: 4000)
--caplin.discovery.tcpport value TCP Port for Caplin DISCV5 protocol (default: 4001)
beaconAPI
Komponen | Pelabuhan | Protokol | Tujuan | Harus Mengekspos |
---|---|---|---|---|
ISTIRAHAT | 5555 | TCP | ISTIRAHAT | Publik |
shared
Komponen | Pelabuhan | Protokol | Tujuan | Harus Mengekspos |
---|---|---|---|---|
semua | 6060 | TCP | pprof | Pribadi |
semua | 6061 | TCP | metrik | Pribadi |
Tanda opsional dapat diaktifkan yang mengaktifkan pprof atau metrik (atau keduanya). Gunakan --help
dengan biner untuk info lebih lanjut.
other
Dicadangkan untuk penggunaan di masa mendatang: port gRPC : mesin konsensus 9092
, pengunduh snapshot 9093
, 9094
TxPool
0.0.0.0/8 "This" Network RFC 1122, Section 3.2.1.3
10.0.0.0/8 Private-Use Networks RFC 1918
100.64.0.0/10 Carrier-Grade NAT (CGN) RFC 6598, Section 7
127.16.0.0/12 Private-Use Networks RFC 1918
169.254.0.0/16 Link Local RFC 3927
172.16.0.0/12 Private-Use Networks RFC 1918
192.0.0.0/24 IETF Protocol Assignments RFC 5736
192.0.2.0/24 TEST-NET-1 RFC 5737
192.88.99.0/24 6to4 Relay Anycast RFC 3068
192.168.0.0/16 Private-Use Networks RFC 1918
198.18.0.0/15 Network Interconnect
Device Benchmark Testing RFC 2544
198.51.100.0/24 TEST-NET-2 RFC 5737
203.0.113.0/24 TEST-NET-3 RFC 5737
224.0.0.0/4 Multicast RFC 3171
240.0.0.0/4 Reserved for Future Use RFC 1112, Section 4
255.255.255.255/32 Limited Broadcast RFC 919, Section 7
RFC 922, Section 7
Sama dalam sintaks IpTables
systemd
Menjalankan erigon dari build/bin
sebagai pengguna terpisah mungkin menghasilkan kesalahan:
error while loading shared libraries: libsilkworm_capi.so: cannot open shared object file: No such file or directory
Perpustakaan perlu diinstal untuk pengguna lain menggunakan make DIST=
. Anda dapat menggunakan $HOME/erigon
atau /opt/erigon
sebagai jalur instalasi, misalnya:
make DIST=/opt/erigon install
kill -SIGUSR1
, dapatkan pelacakan dan hentikan: kill -6
--pprof
dan jalankango tool pprof -png http://127.0.0.1:6060/debug/pprof/profile?seconds=20 > cpu.png
--pprof
dan jalankango tool pprof -inuse_space -png http://127.0.0.1:6060/debug/pprof/heap > mem.png
? Detailed explanation is here.
Docker menggunakan erigon pengguna dengan UID/GID 1000 (untuk alasan keamanan). Anda dapat melihat pengguna ini dibuat di Dockerfile. Dapat memperbaikinya dengan memberikan kepemilikan folder kepada pengguna host, di mana UID/GID pengguna host sama dengan UID/GID pengguna buruh pelabuhan (1000). Detail lebih lanjut di postingan
--txpool.nolocals=true
admin
di daftar --http.api
--http.corsdomain="*"
adalah praktik buruk: tetapkan nama host atau IP yang tepat--rpc.batch.concurrency
, --rpc.batch.limit
https://github.com/mathMakesArt/Erigon-on-RPi-4
Docker memungkinkan untuk membangun dan menjalankan Erigon melalui container. Hal ini mengurangi kebutuhan untuk menginstal dependensi build ke OS host.
UID/GID pengguna perlu disinkronkan antara OS host dan container sehingga file ditulis dengan izin yang benar.
Anda mungkin ingin menyiapkan pengguna/grup khusus pada OS host, dalam hal ini target make
berikut tersedia.
# create "erigon" user
make user_linux
# or
make user_macos
Ada file .env.example
di root repo.
DOCKER_UID
- UID pengguna buruh pelabuhanDOCKER_GID
- GID pengguna buruh pelabuhanXDG_DATA_HOME
- Direktori data yang akan dipasang ke kontainer buruh pelabuhanJika tidak ditentukan, UID/GID akan menggunakan pengguna saat ini.
Pilihan yang baik untuk XDG_DATA_HOME
adalah dengan menggunakan direktori ~erigon/.ethereum
yang dibuat oleh target pembantu make user_linux
atau make user_macos
.
Periksa izin: Dalam semua kasus, XDG_DATA_HOME
(ditentukan atau default) harus dapat ditulisi oleh pengguna UID/GID di buruh pelabuhan, yang akan ditentukan oleh DOCKER_UID
dan DOCKER_GID
pada waktu pembuatan. Jika startup build atau layanan gagal karena izin, periksa apakah semua direktori, UID, dan GID yang dikontrol oleh variabel lingkungan ini sudah benar.
Perintah selanjutnya dimulai: Erigon pada port 30303, rpcdaemon pada port 8545, prometheus pada port 9090, dan grafana pada port 3000.
#
# Will mount ~/.local/share/erigon to /home/erigon/.local/share/erigon inside container
#
make docker-compose
#
# or
#
# if you want to use a custom data directory
# or, if you want to use different uid/gid for a dedicated user
#
# To solve this, pass in the uid/gid parameters into the container.
#
# DOCKER_UID: the user id
# DOCKER_GID: the group id
# XDG_DATA_HOME: the data directory (default: ~/.local/share)
#
# Note: /preferred/data/folder must be read/writeable on host OS by user with UID/GID given
# if you followed above instructions
#
# Note: uid/gid syntax below will automatically use uid/gid of running user so this syntax
# is intended to be run via the dedicated user setup earlier
#
DOCKER_UID= $( id -u ) DOCKER_GID= $( id -g ) XDG_DATA_HOME=/preferred/data/folder DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose
#
# if you want to run the docker, but you are not logged in as the $ERIGON_USER
# then you'll need to adjust the syntax above to grab the correct uid/gid
#
# To run the command via another user, use
#
ERIGON_USER=erigon
sudo -u ${ERIGON_USER} DOCKER_UID= $( id -u ${ERIGON_USER} ) DOCKER_GID= $( id -g ${ERIGON_USER} ) XDG_DATA_HOME= ~ ${ERIGON_USER} /.ethereum DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose
Makefile membuat direktori awal untuk erigon, prometheus dan grafana. Namespace PID dibagi antara erigon dan rpcdaemon yang diperlukan untuk membuka DB Erigon dari proses lain (mode lokal RPCDaemon). Lihat: https://github.com/erigontech/erigon/pull/2392/files
Jika instalasi buruh pelabuhan Anda memerlukan daemon buruh pelabuhan untuk dijalankan sebagai root (yang merupakan default), Anda perlu mengawali perintah di atas dengan sudo
. Namun, terkadang disarankan untuk menjalankan buruh pelabuhan (dan juga containernya) sebagai pengguna non-root untuk alasan keamanan. Untuk informasi selengkapnya tentang cara melakukan ini, lihat artikel ini.
pos
--sync.loop.block.limit=10_000
SNAPSHOT_MADV_RND=false
vmtouch -vdlw /mnt/erigon/snapshots/domain/*bt
ls /mnt/erigon/snapshots/domain/*.kv | parallel vmtouch -vdlw
# if it failing with "can't allocate memory", try:
sync && sudo sysctl vm.drop_caches=3
echo 1 > /proc/sys/vm/compact_memory
Pengguna Windows dapat menjalankan erigon dengan 3 cara yang mungkin:
Bangun binari yang dapat dieksekusi secara asli untuk Windows menggunakan skrip PowerShell wmake.ps1
yang disediakan. Sintaks penggunaannya sama dengan perintah make
jadi Anda harus menjalankan .wmake.ps1 [-target]
. Contoh: .wmake.ps1 erigon
membuat erigon dapat dieksekusi. Semua biner ditempatkan di subfolder .buildbin
. Ada beberapa persyaratan agar build asli di windows berhasil:
chocolatey
- lihat poin berikut).wmake.ps1 db-tools
) maka manajer paket Chocolatey untuk Windows harus diinstal. Dengan Chocolatey Anda perlu menginstal komponen berikut: cmake
, make
, mingw
oleh choco install cmake make mingw
. Pastikan variabel "Jalur" Sistem Windows memiliki: C:ProgramDatachocolateylibmingwtoolsinstallmingw64bin Catatan penting tentang Anti-Virus Selama fase deteksi kompiler MinGW, beberapa executable sementara dihasilkan untuk menguji kemampuan kompiler. Telah dilaporkan beberapa program anti-virus mendeteksi file-file tersebut kemungkinan terinfeksi oleh trojan horse Win64/Kryptic.CIS
(atau variannya). Meskipun hal tersebut merupakan hasil positif palsu, kami tidak memiliki kendali atas 100+ vendor produk keamanan untuk Windows dan algoritme pendeteksiannya masing-masing, dan kami memahami bahwa hal ini mungkin membuat pengalaman Anda dengan Windows build tidak nyaman. Untuk mengatasi masalah ini, Anda dapat menetapkan pengecualian untuk antivirus Anda khususnya untuk sub-folder buildbinmdbxCMakeFiles
dari repo yang dikloning atau Anda dapat menjalankan erigon menggunakan dua opsi lain berikut
Gunakan Docker : lihat docker-compose.yml
Gunakan WSL (Subsistem Windows untuk Linux) hanya pada versi 2 . Dengan opsi ini Anda dapat membangun Erigon seperti yang Anda lakukan pada distribusi Linux biasa. Anda juga dapat mengarahkan data Anda ke salah satu partisi Windows yang terpasang (mis. /mnt/c/[...]
, /mnt/d/[...]
dll) tetapi dalam kasus seperti itu, kinerja akan terpengaruh: ini Hal ini disebabkan oleh fakta bahwa titik pemasangan tersebut menggunakan DrvFS
yang merupakan sistem file jaringan dan, selain itu, MDBX mengunci db untuk akses eksklusif yang berarti hanya satu proses pada satu waktu yang dapat mengakses data. Hal ini berdampak pada jalannya rpcdaemon
yang harus dikonfigurasi sebagai Remote DB meskipun dijalankan di komputer yang sama. Jika data Anda dihosting di sistem file Linux asli, maka batasan tidak berlaku. Harap perhatikan juga bahwa lingkungan WSL2 default memiliki alamat IP sendiri yang tidak cocok dengan salah satu antarmuka jaringan host Windows: pertimbangkan hal ini saat mengonfigurasi NAT untuk port 30303 di router Anda.
Diskusi utama terjadi di server Discord kami. Untuk mendapatkan undangan, kirim email ke bloxster [at] proton.me
dengan nama Anda, pekerjaan, penjelasan singkat mengapa Anda ingin bergabung dengan Discord, dan bagaimana Anda mendengar tentang Erigon.
erigon.substack.com
x.com/ErigonEth
Kirim email ke security [at] torquem.ch
.
htop
menunjukkan penggunaan memori yang salah DB internal Erigon (MDBX) menggunakan MemoryMap
- ketika OS mengelola semua operasi read, write, cache
alih-alih Aplikasi (linux, windows)
htop
di kolom res
menunjukkan memori "Aplikasi + OS digunakan untuk menyimpan cache halaman untuk Aplikasi tertentu", tetapi itu tidak informatif, karena jika htop
mengatakan bahwa aplikasi menggunakan 90% memori, Anda masih dapat menjalankan 3 contoh aplikasi lagi di mesin yang sama - karena sebagian besar dari 90%
itu adalah "cache halaman OS". OS secara otomatis mengosongkan cache ini kapan pun memerlukan memori. "Ukuran cache halaman" yang lebih kecil mungkin tidak mempengaruhi kinerja Erigon sama sekali.
Alat berikutnya menunjukkan penggunaan memori Erigon yang benar:
vmmap -summary PID | grep -i "Physical footprint"
. Tanpa grep
Anda dapat melihat detailnyasection MALLOC ZONE column Resident Size
menunjukkan penggunaan memori Aplikasi, section REGION TYPE column Resident Size
menunjukkan ukuran cache halaman OS.Prometheus
menunjukkan memori aplikasi Go tanpa cache halaman OS ( make prometheus
, buka di browser localhost:3000
, kredensial admin/admin
)cat /proc//smaps
Erigon menggunakan ~4Gb RAM selama sinkronisasi genesis dan ~1Gb selama pekerjaan normal. Cache halaman OS dapat menggunakan jumlah memori yang tidak terbatas.
Peringatan: Beberapa contoh Erigon pada mesin yang sama akan menyentuh Disk secara bersamaan, hal ini berdampak pada kinerja - salah satu optimasi utama Erigon: "kurangi akses acak Disk". "Tahap Eksekusi Blok" masih melakukan banyak pembacaan acak - inilah alasan mengapa ini merupakan tahap paling lambat. Kami tidak menyarankan menjalankan beberapa sinkronisasi genesis pada Disk yang sama. Jika sinkronisasi genesis berhasil, maka boleh saja menjalankan beberapa instance Erigon pada Disk yang sama.
(Seperti gp3) Anda dapat membaca: #1516 (komentar) Singkatnya: disk jaringan buruk untuk eksekusi blok - karena eksekusi blok membaca data dari db non-paralel dengan cara non-batch. Trik: jika Anda menggunakan RAM yang cukup dan menyetel variabel env ERIGON_SNAPSHOT_MADV_RND=false
- maka Erigon akan bekerja cukup baik di drive Cloud - dengan biaya IO yang lebih tinggi.
Misalnya: opsi autodefrag btrfs - dapat meningkatkan IO tulis 100x kali lipat
Gnome Tracker - mendeteksi penambang dan membunuh mereka.
Bagi siapa pun yang mendapatkan kesalahan BuildKit saat mencoba memulai Erigon dengan cara lama Anda dapat menggunakan yang di bawah ini...
XDG_DATA_HOME=/preferred/data/folder DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose