Ho un servizio Mongo con cui interagiscono più host. Lhost su cui è in esecuzione il servizio Mongo è piuttosto speciale: ha 3 TB di RAM. Tuttavia, tale host genera anche risposte intermittenti di errore del bus. Se si verifica un errore del bus allinterno del processo del servizio Mongo, il servizio viene interrotto e tutti i processi celery (Python) che stanno interagendo con la risorsa vengono servite risposte di connessione rifiutata.
Esiste un modo per consentire il servizio Mongo recuperare in qualche modo da un errore del bus? Lo sharding può aiutare con questo problema? Cè qualche altra potenziale soluzione allerrore del bus che può essere fatta a livello di configurazione dellapplicazione? Sarei grato per qualsiasi suggerimento che altri possano offrire su questa domanda!
Ho creato Mongo dai sorgenti su RedHat in modo da poter usare qualsiasi versione recente se questo aiuta. La versione attualmente installata è 3.6.4.
Commenti
- Gli errori del bus derivano da un processo che tenta di indirizzare la RAM che non è presente (non può essere risolta). Immagino che dovresti esaminare HW / Compatibilità SW.
- @dezso non è possibile risolvere questo problema a livello di applicazione? Non posso ' influenzare lhardware in questo caso, ma posso configurare lapplicazione mongo …
- Beh, siccome sembra che MongoDB non sia in grado di gestire (indirizzare) correttamente la memoria, non è certo qualcosa che puoi aggiustare modificando le impostazioni (ma lo dico senza conoscere MongoDB). ' suggerirei di aprire un problema con gli sviluppatori, potrebbero avere unidea migliore di chiunque altro qui.
- @duhaime, potresti aggiornare il " Autobus errore ?. Proviene dal livello software o dalletichetta hardware. Hai controllato " smartmontools " in ambiente Linux?
- @MdHaidarAliKhan Credo che questo errore del bus provenga dal livello hardware, ma ' vorrei rilevare leccezione a livello dellapplicazione …
Risposta
Errore di gestione del bus nel servizio Mongo
Come da Documentazione MongoDB qui Sarebbe anche utile eseguire smartctl
(parte di smartmontools ) per verificare la presenza di errori hardware SMART:
sudo smartctl -a /dev/sdb
Anche tu puoi eseguire lutility fsck
per controllare e riparare i filesystem Linux (ext2
, ext3
, ext4
e così via).
A seconda di quando è stata lultima volta che un file sistema è stato controllato, il sistema esegue fsck
durante lavvio per verificare se il filesystem è in uno stato coerente. Lamministratore di sistema potrebbe anche eseguirlo manualmente quando cè un problema con i filesystem.
Assicurati di eseguire fsck
su un file system non montato per evitare qualsiasi danneggiamento dei dati problemi.
Risposta
Errore bus è più frequentemente unindicazione di un bug del programma, in questo caso lo stesso MongoDB o, raramente, un problema hardware. Pertanto, la prima cosa da provare sarebbe laggiornamento allultima versione stabile. Se il problema persiste, non cè molto che puoi fare al riguardo oltre a inviare una segnalazione di bug a Mongo.