W 1s nie ma pamięci, co robić


Błąd „Brak pamięci” w 1C 8.3 i 8.2 nie jest tak rzadki. Można go znaleźć także w konfiguratorze (na przykład przy porównywaniu konfiguracji), a także w trybie 1C:Enterprise podczas wykonywania pracochłonnego przetwarzania: na przykład podczas pisania dużego pliku base64.

Ten błąd może wystąpić nie tylko w programie 1C, ale także w innych programach systemu operacyjnego Windows.

Rzecz w tym, że w 32-bitowych systemach operacyjnych domyślnie są 2 gigabajty na różne programy i tyle samo na system operacyjny. W 64-bitowym systemie operacyjnym ilość pamięci przydzielonej na aplikacje wynosi już 4 gigabajty.

Zgodnie z powyższym należy zwiększyć rozmiar przydzielonej pamięci adresowej dla aplikacji, czyli programu 1C. Można to zrobić na dwa sposoby: przejść z systemu 32-bitowego na 64-bitowy lub zwiększyć początkowo przydzieloną ilość pamięci adresowej.

Oczywiście pierwsza metoda jest lepsza i preferowana, ale jeśli w tej chwili lub w ogóle nie możesz z niej skorzystać, możesz skorzystać z drugiej.
Rozpocznij dzień, przejdź do wiersza poleceń systemu operacyjnego. Aby to zrobić, przejdź do menu Start i wpisz „cmd” w pasku wyszukiwania.

Przed tobą wyświetli się wyszukiwanie programów. Wybierz ten o nazwie „cmd”.

Możesz także otworzyć wiersz poleceń za pomocą kombinacji klawiszy skrótu Windows + R.

W oknie, które zostanie otwarte, wpisz następujące polecenie i naciśnij „Enter”:

bcdedit /set zwiększenie użytkownika 3200

W takim przypadku zwiększysz ilość pamięci adresowej do 3200 megabajtów.

Po pomyślnym zakończeniu zdecydowanie zaleca się przywrócenie poprzedniej ilości pamięci adresowej. Środek ten ma charakter tymczasowy, ponieważ podczas przydzielania pamięci aplikacjom system operacyjny ma mniej pamięci. Może to zagrozić stabilności systemu Windows.

Aby przywrócić pamięć adresową do wartości domyślnej, możesz użyć następującego polecenia, które również wpisuje się w wierszu poleceń:

bcdedit /deletevaluezwiększużytkownikva

Należy pamiętać, że w przypadku powszechnego błędu „Brak pamięci” w 1C pomocne może być również usunięcie zaznaczonych obiektów. Być może program zgromadził ich dużo i trudno mu przetworzyć takie ilości danych. Jeśli ta metoda nie pomoże, należy zwiększyć bitowość systemu operacyjnego Windows.

Jednym z najczęstszych błędów pojawiających się podczas pracy z 1C 8.3 jest „Za mało pamięci”. W rzeczywistości może to nastąpić po wielu zdarzeniach - aktualizacji, przetworzeniu dużych plików, wygenerowaniu raportu, załadowaniu danych i innych. Oznacza to, że każdy administrator i programista 1C musi zrozumieć istotę problemu i być w stanie go naprawić. Samo zwiększenie pamięci RAM lub dysku twardego komputera nie rozwiąże tego problemu.

Rozwiązywanie problemu na komputerze klienckim

Przyczyny tego błędu nie leżą całkowicie w systemie 1C, ponieważ podobny błąd można zobaczyć w innych aplikacjach. Problem w tym, że w systemach operacyjnych z rodziny Microsoft domyślnie dla każdej aplikacji przydzielana jest określona ilość pamięci. Dla systemów 32-bitowych wartość ta jest ustawiona na 2 GB, dla systemów 64-bitowych - 4 GB. Gdy oprogramowanie przekroczy tę wartość, na monitorze pojawia się okno błędu.

Najprostszym sposobem na pozbycie się takich komunikatów jest usunięcie obiektów oznaczonych w konfiguracji do usunięcia. Pomaga to rzadko, ale eliminuje niepotrzebne wahania. Ponadto ryzyko tych działań jest minimalne, ponieważ nie wymaga ingerencji w wewnętrzne ustawienia systemu Windows. Jeśli usunięcie nie pomoże, będziesz musiał walczyć innymi metodami.

Innym rozwiązaniem dla systemów 32-bitowych jest przejście na wersję 64-bitową lub przydzielenie większej ilości pamięci aplikacjom. Pierwsza opcja jest znacznie bardziej poprawna, ale czasami z różnych powodów jest to niemożliwe. Wtedy pozostaje tylko opcja z pokazanym poniżej algorytmem działania, jednak należy z niej korzystać bardzo ostrożnie – mogą wystąpić spore problemy z wydajnością całego systemu.

Algorytm ten jest dość prosty:

  1. Otwórz wiersz poleceń systemu Windows. Użyj menu Start lub kombinacji klawiszy Windows +R i wprowadź polecenie „cmd”;
  2. W wyświetlonym oknie wpisz polecenie „bcdedit /set raiseuserva 3200” (na przykład zwiększymy limit do 3,2 GB). Warto ostrożnie i stopniowo zwiększać limit;
  3. Po potwierdzeniu pomyślnego zakończenia operacji w oknie wiersza poleceń uruchom ponownie komputer i spróbuj ponownie wykonać kroki, które doprowadziły do ​​błędu. Jeśli problem nie zniknie, a 1C nadal ulega awarii, możesz ponownie zwiększyć limit;
  4. Po pomyślnym zakończeniu operacji bez błędu w 1C przywróć domyślne ograniczenia systemu Windows za pomocą polecenia „bcdedit /deletevalue raiseuserva”. Jest to niezbędny krok, aby system operacyjny nie pogorszył swojej wydajności na rzecz 1C i innych aplikacji.

To rozwiązanie pozwala wykonać operację, której nie można wykonać z powodu błędu 1C „Niewystarczająca pamięć”. Można go zastosować jedynie w nagłych przypadkach, gdy operacja musi zostać wykonana natychmiast. W innych okolicznościach lepiej spróbować uruchomić 1C na platformie 64-bitowej i tam powtórzyć operację.

Komunikat o braku pamięci na serwerze podczas aktualizacji lub operacji na dużą skalę należy potraktować znacznie poważniej. Problemem może być przedwczesne zakończenie procesów uruchamianych przez różne oprogramowanie, co skutkuje „nawarstwianiem się” i kumulacją ich w pamięci wirtualnej. Drugim źródłem takiego błędu jest intensywna praca różnych programów przy rezerwacji i zwalnianiu pamięci. Istnieje różne oprogramowanie rozwiązujące te problemy, ale praktyka pokazuje, że powoduje to zrywanie połączenia i awarie 1C.


Takie błędy sprawiają, że zastanawiasz się, czy serwer 1C jest wystarczająco mocny. Zwiększenie jego mocy przyniesie korzyści firmie, ale taki błąd można obejść w inny sposób, który nie wymaga zastrzyku gotówki.

Oczywiście nie powinieneś ich używać przez cały czas, ale pewnego dnia mogą ci pomóc w pilnym wykonaniu pracy wymagającej dużych zasobów, jeśli zajdzie taka potrzeba. Do popularnych metod, które mogą pomóc rozwiązać błąd niewystarczającej ilości pamięci na serwerze, należą:

  • Ponowne uruchomienie procesów roboczych 1C, co doprowadzi do zmniejszenia używanej pamięci. Ta opcja jest odpowiednia tylko dla doświadczonych administratorów, którzy rozumieją konsolę administracyjną serwera 1C;
  • Korzystając z dziennika technologicznego, znajdź tabelę, która po załadowaniu otrzymuje błąd „Niewystarczająca pamięć” podczas aktualizacji lub innej operacji. Jeżeli podczas pracy z tabelą „config” pojawi się błąd, należy sprawdzić konfigurację flagą „Sprawdź logiczną integralność konfiguracji”. Funkcję tę znajdziesz w konfiguratorze w menu „Konfiguracja”.
  • Inny częsty błąd 1C występuje, gdy na dysku twardym serwera nie ma wystarczającej ilości miejsca. Tabele tymczasowe zajmują dużo miejsca, a jeśli nie ma wystarczającej ilości miejsca, administrator widzi błąd „Nie ma wystarczającej ilości wolnej pamięci, aby wykonać operację”. W tym przypadku trudno o precyzyjną poradę, gdyż konstrukcja serwera czy klastra może znacząco różnić się w poszczególnych wersjach. Wśród standardowych rozwiązań, które pomagają w takich przypadkach, można znaleźć ponowne uruchomienie serwera, zwiększenie wolnego miejsca, optymalizację zapytań i aktualizację wersji.


    W firmach z dużą liczbą użytkowników błąd „Za mało wolnej pamięci na serwerze 1C:Enterprise 8.3” pojawia się dość często. Dużym problemem i warunkiem tego jest niedostateczna analiza wymaganej wydajności. Dlatego wdrażając 1C, zwróć szczególną uwagę na wystarczającą moc serwera, aby w przyszłości nie trzeba było dostosowywać wydajności kosztem stabilności.

    Ta sama sytuacja może wystąpić podczas generowania dużego raportu, wykonywania, podczas wykonywania, ładowania dużej bazy informacji itp. Należy pamiętać, że dzieje się tak podczas wykonywania operacji na dużą skalę, które wymagają określonej ilości zasobów komputera. Co więcej, w trybie normalnym program 1C działa stosunkowo normalnie.

    Wskazówki takie jak czyszczenie dysku, na którym zainstalowany jest program, uruchamianie go w programie, używanie go poprzez wybieranie Kompresja tabel bazy danych , najprawdopodobniej nie dadzą pożądanego rezultatu, choć warto też spróbować.

    Aby program 1C działał, na parametry komputera nakładane są pewne wymagania, a jeśli ich cechy nie odpowiadają zainstalowanemu programowi, mogą pojawić się problemy w postaci spowolnień i pojawienia się tego typu błędów.

    Po dodaniu większej ilości pamięci RAM do naszego komputera błąd pojawia się ponownie. W tym przypadku przyczyną jest ograniczona alokacja pamięci adresowej przez system operacyjny dla oprogramowania:

    • w 32-bitowych systemach operacyjnych domyślnie przydzielane jest 2 GB na różne programy i tyle samo na system operacyjny,
    • w 64-bitowych systemach operacyjnych - pojemność pamięci wynosi już 4 GB.

    Pracując z 1C i wykonując operację, możesz użyć Menadżer zadań monitoruj proces ładowania procesora i ilość wolnej pamięci. W naszym przypadku podczas aktualizacji liczba ta zbliżyła się do zera i w tym momencie wystąpił błąd „Niewystarczająca pamięć”. Początek Menadżer zadań możliwe poprzez naciśnięcie klawiszy Ctrl+Alt+Del i otwarcie zakładki Wydajność, monitoruj te wskaźniki.

    Dlatego musimy zwiększyć rozmiar przydzielonej pamięci adresowej dla aplikacji (w tym 1C). Można to zrobić na dwa sposoby: przejść z systemu 32-bitowego na system 64-bitowy lub zwiększyć domyślną ilość przydzielonej pamięci adresowej. Pierwsza opcja jest bardziej poprawna, ale z pewnych powodów może nie być możliwa, dlatego rozważmy drugą opcję rozwiązania problemu.

    Występują błędy. Przyjrzymy się jednemu z nich, poświęconym tematowi „Niewystarczająca ilość wolnej pamięci na serwerze 1C:Enterprise”.

    Metoda eliminacji błędu „Na serwerze 1C:Enterprise nie ma wystarczającej ilości wolnej pamięci”.

    Pojemność pamięci procesów roboczych podczas pracy na serwerze agenta 1C nie jest nieskończona. Przy maksymalnym obciążeniu użytkownik widzi komunikat, który jest zadowolony z nowości - „Na serwerze 1C:Enterprise nie ma wystarczającej ilości wolnej pamięci”.


    Najpierw porozmawiajmy o przyczynach tego rodzaju wiadomości - dlaczego nie ma wystarczającej ilości pamięci. Może być ich kilka:

    Niewystarczająca moc żelaza

    Jeśli w systemie pracuje maksymalnie pięć osób, wystarczy jeden ośmiogigabajtowy komputer z dwiema śrubkami (na jednej - SERWER, na drugiej - SQL) i dodatkowo zainstalowane chipy. Ale to już inna sprawa – około trzydziestu użytkowników, tysiące podstawowych dokumentów. W tym przypadku SQL należy przenieść na osobny serwer, a sam serwer terminali nie jest w stanie sobie z tym poradzić.

    Brak pamięci na niepotrzebne informacje

    Typowe konfiguracje starają się opisać dosłownie wszystkie procesy, jakie mógłby sobie wyobrazić programista, próbując stworzyć uniwersalne narzędzie księgowe o nazwie 1C:Enterprise. Konkretny użytkownik otrzymuje zatem dodatkowy bagaż w postaci otchłani obiektów metadanych, dodatkowych tabel SQL i niewykorzystanych szczegółów. Ciągła rejestracja i ponowne indeksowanie wszystkich tych niepotrzebnych rzeczy w rejestrach programu zajmuje dużo czasu i dużo miejsca.

    Błędy kodowania

    Do przeciążenia serwera dochodzi także wtedy, gdy programiści (czasami) nie rozumieją pewnych procesów i wprowadzają własne „kule”, które wydłużają czas potrzebny na realizację powierzonych zadań (a także liczbę procesów pracy).

    Błędy programu

    Między innymi i to często jest prawie główny powód - program 1C ma niesamowitą liczbę błędów wewnętrznych. Niektóre z nich zostały poprawione w kolejnych wydaniach. Tym błędom poświęcona jest duża liczba forów, gdzie administratorzy, omawiając najnowsze triki, żartobliwie mówią, że prawdopodobnie tylko Tadżykowie (Dzhamshut i Ravshan) pracują w tej samej sieci społecznościowej.

    Co więc zrobić z serwerem 1C?

    Ponieważ przyczyny problemu mogą być różne, istnieją również różne sposoby rozwiązania sytuacji:

    Ponowne uruchomienie usługi serwera

    Najszybszym i najłatwiejszym rozwiązaniem jest ponowne uruchomienie usługi serwera. Z wiersza poleceń Microsoft Windows (cmd): aby zatrzymać, uruchom polecenie - net stop "1C:Enterprise 8.3 (lub twoja wersja) Server Agent", a aby uruchomić - net start "1C:Enterprise 8.3 (w zależności od twojej wersji) Agent serwera”. To rozwiązanie nie rozwiązuje całkowicie problemu – najczęściej błąd się powtarza. Częstotliwość jego powtórzeń uzależniona jest od liczby klientów oraz liczby procesów roboczych.

    WAŻNY. Aby móc uruchomić ponownie, musisz posiadać odpowiednie uprawnienia.

    Automatyczne ponowne uruchomienie i ustawienia klastra

    Czasami nawet jeden działający przepływ pracy może zająć prawie całą pamięć RAM. Problem ten rozwiązuje się zwiększając ich liczbę w ustawieniach klastra. Dodają około jednego procesu na piętnastu do trzydziestu użytkowników.

    Interwał ponownego uruchomienia. Krótko przed zakończeniem poprzedniego rozpoczyna się nowy proces rphost.exe. - Połączenia ze starego zostają do niego przeniesione. Dopuszczalny rozmiar pamięci - po przekroczeniu tej wartości uruchomiony zostanie drugi licznik odliczający czas.

    Interwał przekroczenia limitu głośności - gdy timer przekroczy tę wartość, zostanie uruchomiony nowy proces. I zostaną do niego dołączone połączenia ze starego. A stary z kolei jest oznaczony jako nieaktywny. Wyłączony zatrzymaj procesy po - po upływie wartości tego parametru po oznaczeniu przepływu pracy jako nieaktywnego, zostanie on zakończony przez system operacyjny. Jeśli ustawisz ten parametr na „0”, wówczas wszystkie nieaktywne procesy nie zostaną automatycznie zakończone.

    WAŻNY. Ustawienie to charakteryzuje się tym, że odłącza od bazy danych tylko klienta, który uruchomił błędny raport. A reszta zostanie płynnie przeniesiona na nowe połączenia (bez przerwy z ich bazy).

    Liczba procesów roboczych

    Jeśli plik rphost.exe jest przeciążony zadaniami w tle i nie powstają nowe procesy, należy sprawdzić ustawienia:

    Maks. Rozmiar pamięci procesów roboczych to całkowita ilość pamięci dla wszystkich procesów razem. Mierzone w bajtach. Jeśli ustawisz niewłaściwą wartość (nieadekwatną do normalnego działania), wszyscy otrzymają błąd „Na serwerze 1c jest za mało wolnej pamięci”.

    Bezpieczne zużycie pamięci na połączenie - kontroluje zużycie pamięci podczas połączenia przez serwer (w bajtach). Jeżeli połączenie wykorzystuje więcej niż określony numer, zostanie zrealizowane w ramach klastra. Nie zostanie uruchomiony ponownie. Utrata sesji nie będzie miała wpływu na innych klientów.

    Ilość pamięci na procesy, do której serwer jest uznawany przez system za produktywny - po osiągnięciu tej wartości serwer klastrowy przestaje przyjmować połączenia. Liczba baz informacyjnych na proces - izoluje bezpieczeństwo informacji według procesu. Po wyodrębnieniu baz informacyjnych (po wpisaniu wartości „1”) problemy zwykle zostają rozwiązane.

    Liczba połączeń na proces - wartość domyślna to „128”. Jeśli bieżąca baza danych jest bardzo obciążona zadaniami w tle, możesz zmniejszyć tę liczbę na przykład do „25”. Dzięki tym ustawieniom ustawienia klastra ulegną niewielkiej zmianie:

    Poziom tolerancji błędów - pokazuje liczbę serwerów, które w przypadku awarii nie spowodują awaryjnego wyłączenia klientów. W takim przypadku usługi tworzenia kopii zapasowych zostaną uruchomione automatycznie w wymaganej ilości.

    Tryb współdzielenia obciążenia – ma dwie możliwe opcje. Jeśli ustawisz „Priorytet wydajności”, pamięć serwera będzie zużywana więcej w celu zwiększenia wydajności. Po wybraniu „Priorytet pamięci” klaster 1C zaoszczędzi pamięć.

    Narzędzie bazy danych

    Do pracy z bazą danych należy używać MS SQL DBMS.

    Sprawdzanie konfiguracji

    Być może przyczyną błędu są nieprawidłowe informacje zawarte w Konfiguracji. Aby to sprawdzić należy uruchomić komendę „Sprawdź konfigurację”. (Nie mylić z testowaniem!). Przed wykonaniem należy sprawdzić ustawienie pola wyboru (pola wyboru) - „integralność logiczna”. Jeżeli zostaną wykryte jakiekolwiek nieprawidłowości, zostanie to odzwierciedlone w komunikacie. I błędy zostaną usunięte.

    Przyjrzeliśmy się przyczynom braku wolnej pamięci na serwerze 1C i możliwym sposobom wyeliminowania tego. Któryś ze sposobów z pewnością rozwiąże problem.

    Nie sposób wymienić wszystkich sytuacji, w których pojawia się błąd 1C „Niewystarczająca pamięć” (ryc. 1). Spróbujmy zidentyfikować główne:

    • Podczas aktualizacji konfiguracji;
    • Podczas uruchamiania aplikacji;
    • Podczas generowania raportu;
    • Podczas wykonywania dużych obliczeń (realizacja dokumentu „Kalkulacja kosztów”, „Zamknięcie miesiąca” i tak dalej).

    Powód we wszystkich przypadkach jest ten sam - brak pamięci fizycznej w komputerze. Jednak dodanie dodatkowych kości RAM do urządzenia nie zawsze rozwiązuje problem.

    Co decyduje o wielkości dostępnej pamięci

    32-bitowe systemy operacyjne mają jedną istotną cechę: niezależnie od ilości pamięci RAM i rozmiaru pliku stronicowania, system operacyjny przydziela tylko 4 GB na uruchomienie określonej aplikacji.

    Biorąc pod uwagę, że połowa przestrzeni adresowej pamięci wirtualnej jest przeznaczona na potrzeby samego systemu, na aplikację pozostaje już tylko 2 GB. Kiedy program jest uruchomiony, przestrzeń adresowa pamięci wirtualnej musi być zarezerwowana w jednym, ciągłym bloku. Gdy nie jest to możliwe, pojawia się okno (rys. 1).

    Jak zwiększyć dostępną pamięć

    Bez ponownej instalacji systemu operacyjnego istnieją dwie możliwości naprawienia sytuacji:


    Korzystając z tych metod, możesz zmniejszyć przestrzeń adresową przydzieloną systemowi operacyjnemu do 1 GB, zwiększając pamięć dla aplikacji do 3 GB.

    Uwaga! Ręczne przydzielanie pamięci może spowodować problemy w działaniu komputera osobistego, aż do całkowitego zatrzymania systemu.

    Usunięcie linii z pliku boot.ini lub uruchomienie komendy i zastąpienie parametru 2900 wartością 2000 przywraca system do pierwotnego stanu.

    Ważne jest, aby zrozumieć, że te metody są jedynie tymczasowym rozwiązaniem problemu; aby go trwale wyeliminować, należy przenieść bazę danych na platformę 64-bitową.

    Za mało pamięci podczas generowania raportu

    Niezbyt często, ale ten błąd występuje, gdy pojawiają się raporty. W tym przypadku proces generowania dokumentu arkusza kalkulacyjnego jest opóźniony i ostatecznie kończy się wyświetleniem okna, jak na pierwszym rysunku.

    Przed wejściem do ustawień systemu operacyjnego i zmianą parametrów alokacji pamięci RAM, w takim przypadku lepiej spróbować zmienić ustawienia raportu. Zmień datę, zmień grupowanie, dodaj selekcję. W większości przypadków to pomaga.

    Jeżeli błąd nie występuje w raporcie standardowym (np. karcie rachunku lub bilansie), a masz dostęp do źródłowego kodu przetwarzającego, sprawdź, czy w zapytaniu nie powstają tabele tymczasowe. Zapisane w pamięci RAM i istniejące do końca żądania, mogą znacznie pochłonąć zasoby słabego komputera.

    Ogólnie rzecz biorąc, aby uniknąć takich sytuacji, zdecydowanie zaleca się niszczenie tabel tymczasowych w zapytaniu natychmiast po tym, jak nie są już potrzebne.

    Wycieki pamięci na serwerze

    W niektórych przypadkach użytkownicy otrzymują komunikat pokazany na rys. 3

    Ryż. 3.

    Chciałbym osobno porozmawiać o przyczynach takiego zachowania serwera.

    Ogólnie rzecz biorąc, określenie „wyciek pamięci” jest nieco niedokładne; lepiej powiedzieć, że pamięć jest przechowywana warstwowo. Programy uruchamiające procesy zapominają o ich terminowym zakończeniu. W rezultacie gromadzą się w pamięci RAM.

    Drugim powodem jest fragmentacja pamięci. Jeżeli podczas pracy serwera nastąpi intensywna rezerwacja i zwolnienie pamięci RAM, w pewnym momencie może dojść do sytuacji, gdy ilość wolnej pamięci będzie wystarczająca, ale nie będzie możliwe przechwycenie ciągłego bloku adresów pamięci o wystarczającej wielkości.

    Drugi problem możesz rozwiązać za pomocą narzędzi systemowych.

    W rezultacie mogą:

    1. Występują problemy z połączeniem, zrywa się, program ulega awarii (ryc. 4)

    Ryc.4

    1. Podczas rozładowywania bazy informacji pojawiają się błędy i zawieszenia;
    2. W pamięci zajmowanej przez procesy 1C występują skoki.

    Aktualizuj błędy

    Ta opcja dotycząca małej ilości pamięci występuje podczas próby aktualizacji konfiguracji do bieżącej wersji. Może to być związane albo z dużą liczbą uruchomionych aplikacji, albo z błędami w bazie danych.

    Pierwszą czynnością w przypadku wystąpienia tego problemu jest uruchomienie zaktualizowanej bazy danych w trybie konfiguratora i przeprowadzenie jej restrukturyzacji (punkt menu Administracja->Testowanie i korekta), chociaż lepiej jest przeprowadzić pełen zakres prac w celu poprawienia błędów i ponownego zindeksowania tabel .