Mam usługę Mongo, z którą współpracuje wiele hostów. Host, na którym działa usługa Mongo, jest wyjątkowy – ma 3 TB pamięci RAM. Jednak ten host generuje również sporadyczne odpowiedzi na błędy magistrali. Jeśli w procesie usługi Mongo wystąpi błąd magistrali, usługa zostaje zatrzymana, a wszystkie procesy selera (Python), które wchodzą w interakcję z zasobem, otrzymują odpowiedzi odmowy połączenia.
Czy istnieje sposób, aby zezwolić usłudze Mongo jakoś wyzdrowieć po błędzie magistrali? Czy fragmentowanie może pomóc w rozwiązaniu tego problemu? Czy istnieje inne potencjalne rozwiązanie błędu magistrali, które można wykonać na poziomie konfiguracji aplikacji? Byłbym wdzięczny za wszelkie sugestie, które inni mogą zaoferować w tej sprawie!
Zbudowałem Mongo ze źródeł na RedHacie, więc mogę użyć dowolnej najnowszej wersji, jeśli to pomoże. Obecnie zainstalowana wersja to 3.6.4.
Komentarze
- Błędy magistrali wynikają z jakiegoś procesu próbującego zaadresować pamięć RAM, której nie ma (nie można jej rozwiązać). Myślę, że powinieneś zajrzeć do HW / Zgodność z oprogramowaniem.
- @dezso czy nie można rozwiązać tego problemu na poziomie aplikacji? Mogę ' t wpłynąć na sprzęt w tym przypadku, ale mogę skonfigurować aplikacja mongo …
- Cóż, jak się wydaje, MongoDB nie może poprawnie obsłużyć (adresować) pamięci. Trudno to naprawić, dostosowując ustawienia (ale mówię to bez znajomości MongoDB). ' d sugeruję otwarcie problemu z programistami, mogą mieć lepszy pomysł niż ktokolwiek tutaj.
- @duhaime, czy możesz zaktualizować " Autobus błąd ?. Czy pochodzi z poziomu oprogramowania, czy etykiety sprzętu. Czy sprawdziłeś " smartmontools " w środowisku Linux?
- @MdHaidarAliKhan Myślę, że ten błąd magistrali pochodzi z na poziomie sprzętu, ale ' chcę przechwycić wyjątek w warstwie aplikacji …
Odpowiedź
Obsługa błędu magistrali w usłudze Mongo
Zgodnie z Dokumentacja MongoDB tutaj Przydałoby się również uruchomienie smartctl
(część smartmontools ), aby sprawdzić błędy sprzętowe SMART:
sudo smartctl -a /dev/sdb
Nawet możesz uruchomić narzędzie fsck
Linuksa używane do sprawdzania i naprawiania systemów plików Linuksa (ext2
, ext3
, ext4
itd.).
W zależności od tego, kiedy ostatni raz plik system został sprawdzony, system uruchamia fsck
podczas rozruchu, aby sprawdzić, czy system plików jest spójny. Administrator systemu może również uruchomić go ręcznie, gdy wystąpi problem z systemami plików.
Upewnij się, że wykonujesz fsck
na odmontowanych systemach plików, aby uniknąć uszkodzenia danych
Odpowiedź
Błąd magistrali najczęściej wskazuje na błąd programu, w tym przypadku sam MongoDB lub, rzadko, problem sprzętowy. W związku z tym pierwszą rzeczą, którą należy wypróbować, byłaby aktualizacja do najnowszej stabilnej wersji. Jeśli problem będzie się powtarzał, niewiele możesz z nim zrobić poza przesłaniem raportu o błędzie do Mongo.