błąd „brak pamięci” podczas próby załadowania określonych stron internetowych (nie brakuje pamięci RAM)

15

AKTUALIZACJA: Rozwiązanie Richa (ze znacznikiem wyboru) rozwiązało mój problem! Wysłałem również odpowiedź z obejściem, które może pomóc, jeśli rozwiązanie Richa nie działa dla Ciebie. Odpowiedź, która otrzymała nagrodę, była wówczas najlepsza, ale nie ma rzeczywistego rozwiązania (chociaż pomogła w rozwiązywaniu problemów).


Mam problem polegający na tym, że mój komputer (Macbook Pro, 8 GB pamięci RAM, system operacyjny OS 10.8) nie próbuje załadować niektórych stron internetowych. Nic nie naprawia tego oprócz restartu. Dzieje się tak, gdy nic innego nie jest oczywiście błędne z moim komputerem lub połączeniem internetowym i gdy inne strony ładują się bez problemów.

Gdy to nastąpi, oto błędy, które otrzymuję:

  • Chrome :Error 13 (net::ERR_OUT_OF_MEMORY)
  • Safari :"The error is: 'The operation couldn't be completed. Cannot allocate memory.' (NSPOSIXErrorDomain:12)"
  • Firefox : Brak odpowiedzi po wprowadzeniu adresu URL i naciśnięciu klawisza Return (brak komunikatu o błędzie, brak sygnału dźwiękowego wskazującego, że ładuje się lub próbuje skontaktować się z witryną).
  • ping :

    PING google.com (74.125.224.135): 56 data bytes
    ping: sendto: Cannot allocate memory
    ping: sendto: Cannot allocate memory
    Request timeout for icmp_seq 0
    ping: sendto: Cannot allocate memory
    Request timeout for icmp_seq 1
    

(po czym anulowałem)

Za pierwszym razem, gdy to zauważyłem, miało to miejsce w przypadku jednej lub dwóch witryn, które próbowałem odwiedzić. Nadal mogłem korzystać z Facebooka i Google. Później tego dnia błąd rozszerzył się również na Facebook i Google. Po ponownym uruchomieniu strony te stały się ponownie dostępne, ale później nie mogłem uzyskać dostępu do innych stron (stackexchange.com, surveyygizmo.com).

Inne uwagi:

  • Mogę potwierdzić, że dzieje się tak w wielu sieciach bezprzewodowych i VPN.
  • W tej chwili tak się działo. Miałem 2 GB pamięci RAM „nieaktywne” i 500 MB „wolnych” z 8 GB, więc właściwie nie brakuje mi pamięci. Inne strony i aplikacje reagują szybko i nie ma oznak nadmiernej zamiany.
  • Odpowiedź ping wydaje się sugerować, że problem nie wpływa na DNS (chociaż adres IP mógł być gdzieś buforowany).

Znalazłem tylko jedno odniesienie do tego problemu w tym wątku wsparcia Apple . Nie znaleziono rozwiązania oprócz ponownego uruchomienia.

UWAGA: Nie jest to problem z brakiem pamięci RAM

Monitor aktywności pokazuje dużo wolnej / nieaktywnej pamięci. Nie ma zbyt dużej ilości stronicowania. Inne strony ładują się bez problemów. Może występować jakiś inny błąd alokacji pamięci, ale nie mogę sobie wyobrazić, że zwykły stary niedobór pamięci RAM spowodowałby wyłączenie określonych stron internetowych, bez żadnego innego wpływu na wydajność.

ośmiornica
źródło
Brzmi dla mnie tak, jakby zabrakło Ci pamięci RAM? Zobacz, gdzie (która przetwarza) twoja pamięć.
Gerry
Dzięki, ale nie sądzę, że to jest problem. Kiedy tak się dzieje, nie ma oznak opóźnień ani zamiany; po prostu natychmiast daje mi błąd. Inne programy i karty przeglądarki nadal odpowiadają bez opóźnień. Ponadto 2,5G dostępnej pamięci RAM to raczej dużo (chyba że coś jest poważnie zepsute i nie uda się ponownie przydzielić nieaktywnej pamięci).
październik
Być może coś jest zepsute, ale nie jest to problem z przeglądaniem, ale bardziej ogólnie związany z zarządzaniem pamięcią.
Gerry
Po przerwie problem powraca. Tym razem uniemożliwiało mi przejście do dowolnego z moich plików roboczych, więc naprawdę potrzebuję poprawki! Dodano nagrodę.
octu
2
Ten problem raczej nie jest związany z pamięcią systemową, ale z buforami sieciowymi. Pokaż nam wynik działania netstat -m. Z jakich sieci VPN korzystasz? Czy widzisz problem, gdy nie korzystasz z VPN?
AndrewNimmo

Odpowiedzi:

6

Nie byłem w stanie odzyskać mojej sieci, wyłączając i ponownie włączając TCP / IP lub Wi-Fi. Wygląda na to, że w moim przypadku komputer zasnął z połączeniem VPN Juniper, a kiedy się obudził, połączenie wygasło i trasy nie zostały wyczyszczone. Dla mnie miałem dwa komputery, jeden działający, a drugi nie, więc mogłem zidentyfikować problem po uruchomieniu netstat -rn.

Na komputerze, który nie działał, miałem adres docelowy 192.168.43.1 z bramą łącza nr 5. Na komputerze, który WAS działał, bramą dla tego miejsca docelowego był adres mac routera bezprzewodowego, więc usunąłem tę trasę za pomocą:

sudo route delete -host 192.168.43.1

Następnie mogłem pingować router bezprzewodowy, a także wrócić do Internetu.

Niektóre osoby twierdziły, że przejście do Ustawienia → Sieć → Wi-Fi → Zaawansowane → Serwery proxy i włączenie Auto Proxy Discovery działało dla nich. Nie mogłem tego zweryfikować, ponieważ moje połączenie zostało naprawione przez usunięcie „martwej” trasy.

Bogaty
źródło
To działa! I w przeciwieństwie do mojego rozwiązania, naprawia podstawowy problem i pomaga wyjaśnić, co się dzieje. Dziękuję Ci!
octu
Patrząc wstecz, wygląda na to, że przyczyną moich problemów był również klient Juniper. Mogę teraz zgłosić, że to zjawisko nie powróciło, odkąd moja organizacja przestała używać Juniper i przeszła na natywny interfejs VPN OS X.
octu
4

To nie jest pamięć RAM ani problem związany z dyskiem.

Jest to problem z jądrem wynikający z niewłaściwego zachowania jednego z interfejsów sieciowych. Oto kilka poleceń, aby rozpocząć lokalizowanie źródła problemu, gdy wystąpi:

  • netstat -mm dostarczy szczegółowych informacji o wykorzystaniu puli buforów;
  • netstat -I en0jeśli twój rzeczywisty używany interfejs sieciowy to en0(Ethernet) pokaże ci jakiekolwiek rzeczywiste błędy (Ierrs, Oerrs);
  • netstat -r pokaże Ci, czy Twoje trasy do reszty świata są prawidłowe.

To niewłaściwe zachowanie może być konsekwencją automatycznego lub ukierunkowanego ataku sieciowego. Jeśli podejrzewasz, że masz do czynienia z taką sprawą, oto sposób, aby spojrzeć prawdzie prosto w oczy:

  • pozostawia żadnych aplikacji sieciowej ( Safari, Mail, ssh...), tak aby ograniczyć swoją znaną hałas (na interfejsie sieciowym);
  • otwórz a Terminali wpisz: /usr/bin/sudo tcpdump -i en0(jeśli twój interfejs to en0== Ethernet);
    • jeśli wynik działania tcpdumppozostaje cichy, nie zostaniesz zaatakowany, po prostu wyjdź z tej uprzywilejowanej aplikacji, naciskając control-C
    • jeśli wyjście tcpdumppowodzi, jesteś atakowany. Jeśli tak jest, proszę zamieścić wyciąg z tego wyjścia i 3 powyższych poleceń.
dan
źródło
Nadal nie byłem w stanie tego przetestować, ale spróbuję, kiedy będę mógł. Przyznałem nagrodę, aby nie wygasła. Dziękuję za twoje sugestie.
octern
Jestem bardzo zainteresowany twoimi następującymi testami, ponieważ miałem ten sam trudny do odtworzenia problem… i muszę go zabić!
dan
3

To powinno być dość łatwe do wyśledzenia za pomocą narzędzia sysdiagnose.

Gdy przeglądarka zaklinuje się i pluje błędami, otwórz terminal i dodaj nazwę przeglądarki jako argument do skryptu: (więc jeśli Safari ulega awarii)

 sysdiagnose Safari

To narzędzie zadzwoni, sudoco wymaga wpisania hasła (nie będzie wyświetlane na ekranie, więc wpisz je powoli, jeśli jesteś nowym użytkownikiem sudo lub masz skłonność do błędnego wpisywania hasła, jeśli nie widzisz, że jest wpisywane).

W tym momencie otrzymasz ogromny plik tar.gz do diagnozy systemu przechowywany w katalogu / private / var / tmp, który możesz skopiować na pulpit i przejrzeć. Będzie to trochę jak szukanie igły w stogu siana - ale możesz być pewien, że jakiś zasób zostanie zapełniony, jeśli ponowne uruchomienie sprawi, że wszystko zadziała, dopóki jakikolwiek błąd lub zasób nie zostanie ponownie uruchomiony / użyty.

bmike
źródło
Dzięki za radę! Musiałem ponownie uruchomić komputer, aby wykonać pilną pracę, więc problem nie jest teraz aktywny. Na pewno wypróbuję twoją sugestię i wyślę odpowiedź następnym razem, gdy się pojawi.
octern
Brzmi dobrze - jeśli nie możesz zdiagnozować problemu, możesz również przesłać raport o błędach do Apple. Prawdopodobnie nie odpowiedzą, aby pomóc ci w rozwiązaniu problemu, ale mogą być w stanie naprawić podstawowy problem z przesyłanymi danymi na temat wyglądu systemu, gdy uda się go ponownie naprawić.
bmike
2

Spójrz na swoją tablicę routingu (uruchom netstat -rnna terminalu). Ten problem występuje nawet po ponownym uruchomieniu.

Rozwiązałem podobne problemy, wyłączając protokół TCP / IP ( Preferencje systemowe »Sieć» Wi-Fi »Zaawansowane» TCP / IP ) i ponownie włączając protokół TCP / IP dla interfejsu Wi-Fi / Ethernet.

VincentM
źródło
1

Ten problem raczej nie jest związany z pamięcią systemową, ale z buforami sieciowymi. Pokaż nam wynik działania netstat -m.

Z jakiego oprogramowania VPN korzystasz? Czy widzisz problem, gdy nie korzystasz z VPN?

AndrewNimmo
źródło
0

Kilka sugestii, chociaż być może już je wypróbowałeś:

  1. Wyczyść skrzynki, wszędzie ... uruchom Cocktail lub MacPilot, aby nuke'em ich wszystkich.
  2. Wyczyść Internet Plug-insfolder w Libraryfolderze głównym . Każda przeglądarka będzie z nich korzystać.
  3. Sugeruję również utworzenie nowego, nowego konta użytkownika i przetestowanie go, aby zobaczyć, co się stanie.
Pixelwiz
źródło
0

Mój przyjaciel miał kiedyś podobny problem z Google Chrome, w którym w ten sposób ściągał pamięć RAM. Możesz sprawdzić, jakie programy używają ilości pamięci RAM, gdy ten problem występuje w monitorze aktywności. Jeśli jest poddziałanie przeglądarki Google Chrome, możesz spróbować zainstalować ją ponownie.

cbbcbail
źródło
0

Po wielu ślepych eksperymentach znalazłem rozwiązanie! Jeśli ręcznie utworzę wpis w tabeli routingu dla bloku IP, który nie ładuje się, rozwiązuje to problem.

Krok 1: Znajdź adres IP witryny, którą chcesz załadować.

Możesz to zrobić za pomocą ping, diglub nslookup(zobacz to pytanie, aby poznać szczegóły).

Krok 2: Znajdź adres IP bramy

Można to znaleźć w panelu sterowania siecią, z ifconfiglub, uruchamiając netstat -rni zapisując adres IP obok wpisu „default”.

Krok 3: Utwórz pozycję tabeli routingu dla dotkniętego adresu IP lub bloku

Użyj polecenia sudo route add [affected IP address] [gateway IP address]

Jeśli, podobnie jak ja, masz ten problem z całymi blokami IP na raz, możesz wprowadzić cały blok / 8. Na przykład, jeśli adres witryny, do której 173.231.155.34chcesz przejść, to możesz wpisaćsudo route add 173.0.0.0/8 [gateway IP address]

To całkiem złe rozwiązanie. Musisz ręcznie wprowadzić je ponownie, jeśli zmienisz sieć na inny adres bramy lub uruchomisz się ponownie. I nadal nie wyjaśnia, dlaczego tak się dzieje. Ale to pozwala mi korzystać z mojego komputera, kiedy wcześniej byłem całkowicie chory.

ośmiornica
źródło