Nema memorije u 1s što učiniti


Pogreška "Nema memorije" u 1C 8.3 i 8.2 nije tako rijetka. Također se može naći u konfiguratoru (na primjer, pri usporedbi konfiguracija), kao iu 1C:Enterprise modu pri izvođenju radno intenzivne obrade: na primjer, pri pisanju velike base64 datoteke.

Ova se pogreška može pojaviti ne samo u programu 1C, već iu drugim programima operacijskog sustava Windows.

Stvar je u tome što u 32-bitnim operativnim sustavima prema zadanim postavkama postoje 2 gigabajta za razne programe i isto toliko za operativni sustav. U 64-bitnom OS-u količina memorije dodijeljene aplikacijama već iznosi 4 gigabajta.

Slijedeći gore navedeno, trebate povećati veličinu dodijeljene adresne memorije za aplikacije, što je program 1C. To se može učiniti na dva načina: prebaciti se s 32-bitnog sustava na 64-bitni ili povećati početno dodijeljenu količinu adresne memorije.

Naravno, prva metoda je bolja i poželjnija, ali ako je trenutno ili uopće ne možete koristiti, onda možete koristiti drugu.
Početak dana, idite na naredbeni redak operativnog sustava. Da biste to učinili, idite na izbornik Start i upišite "cmd" u traku za pretraživanje.

Ispred vas će se prikazati traženje programa. Odaberite onaj pod nazivom "cmd".

Naredbeni redak možete otvoriti i kombinacijom tipki prečaca Windows + R.

U prozoru koji se otvori upišite sljedeću naredbu i pritisnite “Enter”:

bcdedit /set increaseuserva 3200

U ovom slučaju povećat ćete količinu adresne memorije na 3200 megabajta.

Nakon što ste uspjeli, snažno se preporučuje da vratite prethodnu količinu memorije adresa. Ova mjera je privremena, budući da prilikom dodjele memorije aplikacijama operativni sustav ima manje memorije. To može ugroziti stabilnost sustava Windows.

Za vraćanje memorije adrese na zadanu vrijednost, možete koristiti sljedeću naredbu, koja se također unosi u naredbeni redak:

bcdedit /deletevalue povećatikorisnički servis

Imajte na umu da s uobičajenom pogreškom "Nema memorije" u 1C, brisanje označenih objekata također može pomoći. Možda ih je program nakupio puno i teško mu je obraditi toliku količinu podataka. Ako ova metoda ne pomaže, trebali biste povećati bitnost operativnog sustava Windows.

Jedna od najčešćih pogrešaka koje se javljaju pri radu s 1C 8.3 je "Nema dovoljno memorije". U stvarnosti se može dogoditi nakon mnogih događaja - ažuriranja, obrade velikih datoteka, generiranja izvješća, učitavanja podataka i drugih. To znači da svaki administrator i 1C programer mora razumjeti bit problema i moći ga riješiti. Jednostavno povećanje RAM-a ili tvrdog diska vašeg računala neće riješiti ovaj problem.

Rješavanje problema na klijentskom računalu

Razlozi za ovu pogrešku ne leže u potpunosti u sustavu 1C, jer sličnu pogrešku možete vidjeti u drugim aplikacijama. Problem je u tome što se u operativnim sustavima obitelji Microsoft prema zadanim postavkama svakoj aplikaciji dodjeljuje određena količina memorije. Za 32-bitne sustave ova je vrijednost postavljena na 2 GB, za 64-bitne sustave - 4 GB. Kada softver premaši ovu vrijednost, na monitoru se pojavljuje prozor s pogreškom.

Najlakši način da se riješite takvih poruka je brisanje objekata označenih za brisanje u konfiguraciji. Ovo rijetko pomaže, ali eliminira nepotrebno oklijevanje. Osim toga, rizik od ovih radnji je minimalan, jer ne zahtijeva intervenciju u unutarnje postavke sustava Windows. Ako uklanjanje ne pomogne, morat ćete se boriti drugim metodama.

Drugo rješenje za 32-bitne sustave je prebacivanje na 64-bitnu verziju ili dodjeljivanje više memorije aplikacijama. Prva opcija je mnogo ispravnija, ali ponekad je iz raznih razloga nemoguća. Zatim postoji samo opcija s algoritmom radnji prikazanim u nastavku, ali trebali biste je koristiti vrlo pažljivo - moglo bi doći do značajnih problema s performansama cijelog sustava.

Ovaj algoritam je prilično jednostavan:

  1. Otvorite Windows naredbeni redak. Koristite izbornik Start ili kombinaciju tipki Windows +R i unesite naredbu “cmd”;
  2. U prozoru koji se pojavi upišite naredbu “bcdedit /set increaseuserva 3200” (na primjer, povećat ćemo ograničenje na 3,2 GB). Vrijedno je pažljivo i postupno povećavati granicu;
  3. Nakon potvrde uspješnog završetka operacije u prozoru naredbenog retka, ponovno pokrenite računalo i ponovno pokušajte korake koji su doveli do pogreške. Ako problem ne nestane i 1C se i dalje ruši, možete ponovno povećati ograničenje;
  4. Nakon uspješnog završetka operacije bez pogreške u 1C, vratite zadana ograničenja sustava Windows naredbom "bcdedit /deletevalue increaseuserva". Ovo je nužan korak kako OS ne bi ugrozio svoje performanse radi 1C i drugih aplikacija.

Ovo rješenje omogućuje izvođenje operacije koja se ne može izvršiti zbog pogreške 1C "Nedovoljno memorije". Može se koristiti samo u hitnim slučajevima kada se operacija mora izvesti odmah. U drugim okolnostima, bolje je pokušati pokrenuti 1C na 64-bitnoj platformi i tamo ponoviti operaciju.

Poruku da nema dovoljno memorije na poslužitelju tijekom ažuriranja ili velike operacije trebali biste shvatiti mnogo ozbiljnije. Problem može biti nepravodobno dovršavanje procesa pokrenutih raznim softverima, što rezultira njihovim “raslojavanjem” i gomilanjem u virtualnoj memoriji. Drugi izvor takve pogreške je intenzivan rad raznih programa s rezervacijom i oslobađanjem memorije. Postoje razni softveri za rješavanje ovih problema, ali praksa pokazuje da uzrokuje prekide veze i padove 1C.


Ovakve pogreške tjeraju vas da se zapitate je li 1C poslužitelj dovoljno moćan. Povećanje kapaciteta ići će u korist tvrtke, ali se ova greška može zaobići na druge načine koji ne zahtijevaju injekciju sredstava.

Naravno, ne biste ih trebali koristiti cijelo vrijeme, ali jednog dana vam mogu pomoći da hitno obavite posao koji zahtijeva resurse ako je potrebno. Među popularnim metodama koje mogu pomoći u rješavanju pogreške nedostatka memorije na poslužitelju su:

  • Ponovno pokretanje radnih procesa 1C, što će dovesti do smanjenja korištene memorije. Ova je opcija prikladna samo za iskusne administratore koji razumiju konzolu za administraciju poslužitelja 1C;
  • Pomoću tehnološkog dnevnika pronađite tablicu koja, kada se učita, prima pogrešku "Nedovoljno memorije" tijekom ažuriranja ili druge operacije. Ako se prilikom rada s tablicom "config" pojavi pogreška, provjerite konfiguraciju pomoću oznake "Provjeri logički integritet konfiguracije". Ovu funkciju možete pronaći u konfiguratoru u izborniku “Konfiguracija”.
  • Još jedna uobičajena pogreška 1C javlja se kada nema dovoljno prostora na tvrdom disku na poslužitelju. Privremene tablice zauzimaju puno prostora, a ako nema dovoljno prostora, administrator vidi grešku "Nema dovoljno slobodne memorije za izvođenje operacije." U ovom slučaju teško je dati precizan savjet, budući da se dizajn poslužitelja ili klastera može značajno razlikovati u različitim verzijama. Među standardnim rješenjima koja pomažu u takvim slučajevima možete pronaći ponovno pokretanje poslužitelja, povećanje slobodnog prostora, optimizaciju upita i ažuriranje verzije.


    U tvrtkama s velikim brojem korisnika pogreška "Nedovoljno slobodne memorije na poslužitelju 1C:Enterprise 8.3" pojavljuje se prilično često. Veliki problem i preduvjet za to je nedovoljna analiza potrebnih performansi. Stoga, prilikom implementacije 1C, obratite veliku pozornost na dovoljnu snagu poslužitelja kako u budućnosti ne biste morali prilagođavati performanse nauštrb stabilnosti.

    Ista situacija se može dogoditi tijekom generiranja velikog izvješća, izvršavanja, prilikom izvršavanja, učitavanja velike baze podataka itd. Imajte na umu da se to događa prilikom izvođenja nekih velikih operacija koje zahtijevaju određenu količinu računalnih resursa. Štoviše, u normalnom načinu rada program 1C radi relativno normalno.

    Savjeti kao što su čišćenje diska na kojem je program instaliran, pokretanje u programu, korištenje odabirom Sažimanje tablica infobaze , najvjerojatnije neće dati željeni rezultat, iako ih također vrijedi pokušati.

    Da bi program 1C radio, određeni su zahtjevi nametnuti parametrima računala, a ako njihove karakteristike ne odgovaraju instaliranom programu, tada se mogu pojaviti problemi u obliku usporavanja i pojave ove vrste pogreške.

    Nakon dodavanja više RAM-a našem računalu, pogreška se ponovno pojavljuje. U ovom slučaju razlog leži u ograničenoj dodjeli adresne memorije od strane operativnog sustava za softver:

    • u 32-bitnim operativnim sustavima prema zadanim postavkama 2 GB je alocirano za razne programe i isto toliko za operativni sustav,
    • u 64-bitnim operativnim sustavima - kapacitet memorije je već 4 GB.

    Kada radite s 1C i izvodite operaciju, možete koristiti Upravitelj zadataka pratiti proces opterećenja procesora i slobodnu količinu memorije. U našem slučaju, tijekom ažuriranja ova se brojka približila nuli i u tom trenutku se pojavila pogreška "Nedovoljno memorije". Pokreni Upravitelj zadataka moguće pritiskom na tipke Ctrl+Alt+Del i otvaranje kartice Izvođenje, pratite ove pokazatelje.

    Stoga moramo povećati veličinu memorije dodijeljene adrese za aplikacije (uključujući 1C). To se može učiniti na dva načina: prebaciti se s 32-bitnog sustava na 64-bitni ili povećati zadanu količinu dodijeljene adresne memorije. Prva opcija je ispravnija, ali iz nekih razloga možda neće biti moguća, pa razmotrimo drugu opciju za rješavanje problema.

    Događaju se greške. Pogledat ćemo jedan od njih, posvećen temi "Nedovoljno slobodne memorije na poslužitelju 1C: Enterprise."

    Metoda za uklanjanje pogreške "Nema dovoljno slobodne memorije na poslužitelju 1C:Enterprise."

    Kapacitet memorije radnih procesa pri radu na poslužitelju 1C agenta nije beskonačan. Kada je maksimalno opterećenje, korisnik vidi poruku koja je zadovoljna svojom novošću - "Nema dovoljno slobodne memorije na poslužitelju 1C: Enterprise."


    Prvo, razgovarajmo o razlozima ove vrste poruka - zašto nema dovoljno memorije. Može ih biti nekoliko:

    Nedovoljna snaga željeza

    Ako u sustavu radi do pet ljudi, tada će biti dovoljno jedno računalo od osam gigabajta s dva vijka (na jednom - SERVER, na drugom - SQL) i dodatno instaliranim čipovima. Ali druga je stvar - tridesetak korisnika, tisuće primarnih dokumenata. Ovdje se SQL treba premjestiti na zaseban poslužitelj, a sam terminalski poslužitelj se ne može nositi.

    Nedostatak memorije za nepotrebne informacije

    Tipične konfiguracije pokušavaju opisati doslovno sve procese koje programer može zamisliti, pokušavajući stvoriti univerzalni računovodstveni alat pod nazivom 1C:Enterprise. Stoga određeni korisnik dobiva dodatnu prtljagu u obliku bezdana metapodataka, dodatnih SQL tablica i neiskorištenih detalja. Stalna registracija i ponovno indeksiranje svih tih nepotrebnih stvari u programskim registrima oduzima puno vremena i puno prostora.

    Pogreške kodiranja

    Do preopterećenja poslužitelja dolazi i kada programeri (ponekad) ne razumiju određene procese te uvode vlastite “štake” koje povećavaju vrijeme potrebno za obavljanje dodijeljenih zadataka (a i broj radnih procesa).

    Programske greške

    Između ostalog, a to je često gotovo glavni razlog - program 1C ima nevjerojatan broj internih grešaka. Neki od njih su popravljeni u sljedećim izdanjima. Velik broj foruma posvećen je tim pogreškama, gdje administratori, raspravljajući o najnovijim trikovima, u šali kažu da vjerojatno samo Tadžici (Dzhamshut i Ravshan) rade na istoj društvenoj mreži.

    Dakle, što učiniti s 1C poslužiteljem?

    Budući da uzroci problema mogu biti različiti, postoje i različiti načini rješavanja situacije:

    Ponovno pokretanje usluge poslužitelja

    Najbrže i najjednostavnije rješenje je ponovno pokretanje usluge poslužitelja. Iz Microsoft Windows naredbenog retka (cmd): za zaustavljanje pokrenite naredbu - net stop "1C:Enterprise 8.3 (ili vaša verzija) Server Agent", a za početak - net start "1C:Enterprise 8.3 (prema vašoj verziji) Agent poslužitelja". Ovo rješenje ne rješava problem u potpunosti - najčešće se greška ponavlja. Učestalost njegovih ponavljanja ovisi o broju klijenata i broju radnih procesa.

    VAŽNO. Da biste mogli ponovno pokrenuti, morate imati odgovarajuća prava.

    Automatsko ponovno pokretanje i postavke klastera

    Ponekad čak i jedan pokrenuti tijek rada može zauzeti gotovo sav RAM. Taj se problem rješava povećanjem njihovog broja u postavkama klastera. Dodaju otprilike jedan proces na svakih petnaest do trideset korisnika.

    Interval ponovnog pokretanja. Nedugo prije završetka prethodnog, pokreće se novi proces rphost.exe. - Na njega se prenose veze sa starog. Dopuštena veličina memorije - ako je ova vrijednost premašena, pokrenut će se drugo odbrojavanje vremena.

    Interval za prekoračenje granične glasnoće - kada mjerač vremena prijeđe ovu vrijednost, pokrenut će se novi proces. I na njega će se spojiti veze sa starog. A stari je pak označen kao neaktivan. Isključeno zaustavi procese nakon - nakon što vrijednost ovog parametra prođe nakon označavanja tijeka rada kao neaktivnog, operativni sustav će ga prekinuti. Ako ovaj parametar postavite na "0", tada se svi neaktivni procesi neće automatski prekinuti.

    VAŽNO. Ovu postavku karakterizira činjenica da isključuje iz baze podataka samo klijenta koji je pokrenuo neispravno izvješće. A ostatak će se glatko premjestiti na nove veze (bez prekida iz njihove baze).

    Broj radnih procesa

    Ako je rphost.exe preopterećen pozadinskim poslovima i ne stvaraju se novi procesi, trebate provjeriti postavke:

    Maks. Veličina memorije radnih procesa je ukupna količina memorije za sve procese zajedno. Mjereno u bajtovima. Ako postavite pogrešnu vrijednost (neprikladnu za normalan rad), svi će dobiti pogrešku "Nema dovoljno slobodne memorije na 1c poslužitelju."

    Sigurna potrošnja memorije po pozivu - kontrolira potrošnju memorije tijekom poziva od strane poslužitelja (u bajtovima). Ako poziv koristi više od navedenog broja, bit će dovršen unutar klastera. Neće se ponovno pokrenuti. A gubitak sesije neće utjecati na druge klijente.

    Količina memorije za procese do vrijednosti čije se poslužitelj smatra produktivnim od strane sustava - kada se dosegne ta vrijednost, poslužitelj klastera prestaje prihvaćati veze. Broj informacijskih baza po procesu - izolira informacijsku sigurnost po procesu. Nakon izdvajanja informacijskih baza (unošenjem vrijednosti “1”) problemi se obično rješavaju.

    Broj veza po procesu - zadana vrijednost je “128”. Ako trenutna baza podataka ima jako veliko opterećenje od pozadinskih poslova, tada možete smanjiti ovaj broj, na primjer, na "25". S ovim postavkama, postavke klastera malo će se promijeniti:

    Razina tolerancije greške - pokazuje broj poslužitelja koji, ako zakažu, neće uzrokovati hitno gašenje klijenata. U tom će se slučaju sigurnosne usluge automatski pokrenuti u potrebnoj količini.

    Način dijeljenja opterećenja - ima dvije moguće opcije. Ako postavite “Prioritet performansi”, tada će se memorija poslužitelja trošiti više za povećanje performansi. Kada odaberete "Prioritet memorije", 1C klaster će uštedjeti memoriju.

    Alat za baze podataka

    Za rad s bazom podataka morate koristiti MS SQL DBMS.

    Provjera konfiguracije

    Možda uzrok pogreške leži u netočnim informacijama sadržanim u Konfiguraciji. Da biste to provjerili, morate pokrenuti naredbu “Provjeri konfiguraciju”. (Ne brkati s testiranjem!). Prije izvršenja morate provjeriti postavku potvrdnog okvira (potvrdni okvir) - "logički integritet". Ako se otkrije bilo kakva netočnost, to će se odraziti u poruci. I pogreške će biti uklonjene.

    Pogledali smo razloge nedostatka slobodne memorije na 1C poslužitelju i moguće načine da se to ukloni. Jedna od metoda sigurno će riješiti problem.

    Nemoguće je navesti sve situacije kada se pojavi pogreška 1C "Nedovoljno memorije" (slika 1). Pokušajmo identificirati glavne:

    • Prilikom ažuriranja konfiguracije;
    • Prilikom pokretanja aplikacije;
    • Prilikom generiranja izvješća;
    • Prilikom izvođenja velikih kalkulacija (provođenje dokumenta "Obračun troškova", "Zatvaranje mjeseca" i tako dalje).

    Razlog je u svim slučajevima isti - nedostatak fizičke memorije na računalu. Međutim, dodavanje dodatnih RAM stickova na uređaj ne rješava uvijek problem.

    Što određuje veličinu dostupne memorije

    32-bitni operativni sustavi imaju jednu značajnu značajku: bez obzira na količinu RAM-a i veličinu stranične datoteke, operativni sustav izdvaja samo 4 GB za pokretanje određene aplikacije.

    S obzirom da je polovica adresnog prostora virtualne memorije alocirana za potrebe samog sustava, aplikaciji ostaje samo 2GB. Kada se program izvodi, adresni prostor virtualne memorije mora biti rezerviran u jednom kontinuiranom bloku. Kada to nije moguće, pojavljuje se prozor (slika 1).

    Kako povećati dostupnu memoriju

    Bez ponovne instalacije operativnog sustava, postoje dvije mogućnosti za ispravljanje situacije:


    Pomoću ovih metoda možete smanjiti adresni prostor dodijeljen operativnom sustavu na 1 GB, povećavajući memoriju za aplikaciju na 3 GB.

    Pažnja! Ručnom dodjelom memorije možete naići na probleme u radu osobnog računala, sve do potpunog zaustavljanja sustava.

    Uklanjanje reda iz datoteke boot.ini ili pokretanje naredbe i zamjena parametra 2900 s 2000 vraća sustav u prvobitno stanje.

    Važno je razumjeti da su ove metode samo privremeno rješenje problema; da biste ga trajno uklonili, morate prenijeti bazu podataka na 64-bitnu platformu.

    Nedovoljno memorije prilikom generiranja izvješća

    Ne baš često, ali ova se pogreška pojavljuje kada se pojave izvješća. U ovom slučaju, obrada generiranja tabličnog dokumenta kasni i na kraju završava prozorom, kao na prvoj slici.

    Prije nego što uđete u postavke operativnog sustava i promijenite parametre dodjele RAM-a, u ovom slučaju bolje je pokušati promijeniti postavke izvješća. Promijenite datum, promijenite grupiranje, dodajte odabir. U većini slučajeva ovo pomaže.

    Ako se pogreška ne pojavljuje u standardnom izvješću (kao što je kartica računa ili bilanca), a imate pristup izvornom kodu za obradu, provjerite formiraju li se privremene tablice u upitu. Snimljeni u RAM-u i postojeći do kraja zahtjeva, mogu značajno pojesti resurse slabog računala.

    Općenito, kako bi se izbjegle takve situacije, toplo se preporučuje uništiti privremene tablice u upitu odmah nakon što više nisu potrebne.

    Curenje memorije na poslužitelju

    U nekim slučajevima korisnici dobivaju poruku prikazanu na slici 3

    Riža. 3.

    Želio bih zasebno razgovarati o razlozima ovakvog ponašanja poslužitelja.

    Općenito, fraza "curenje memorije" donekle je netočna; bolje je reći da se memorija pohranjuje, slojevito. Programi koji pokreću procese zaboravljaju ih na vrijeme prekinuti. Kao rezultat toga, nakupljaju se u RAM-u.

    Drugi razlog je fragmentacija memorije. Ako se tijekom rada poslužitelja dogodi intenzivno rezerviranje i oslobađanje RAM-a, u jednom trenutku može doći do situacije da je količina slobodne memorije dovoljna, ali je nemoguće uhvatiti kontinuirani blok memorijskih adresa dovoljne veličine.

    Drugi problem možete riješiti pomoću uslužnih programa sustava.

    Kao rezultat toga mogu:

    1. Postoje problemi s vezom, prekida se, program se ruši (slika 4);

    sl.4

    1. Pogreške i zamrzavanja pojavljuju se prilikom pražnjenja baze podataka;
    2. Postoje skokovi u memoriji koju zauzimaju 1C procesi.

    Pogreške ažuriranja

    Ova opcija nedostatka memorije pojavljuje se kada pokušate ažurirati konfiguraciju na trenutno izdanje. Može biti povezan ili s velikim brojem pokrenutih aplikacija ili s pogreškama u bazi podataka.

    Prva radnja kada se pojavi ovaj problem je pokretanje ažurirane baze podataka u modu konfiguratora i provođenje njenog restrukturiranja (stavka izbornika Administracija->Testiranje i ispravak), iako je bolje izvršiti čitav niz radova na ispravljanju pogrešaka i reindeksiranju tablica .