Nema memorije u 1s šta da radim


Greška “Out of Memory” u 1C 8.3 i 8.2 nije tako rijetka. Također se može naći u konfiguratoru (na primjer, prilikom upoređivanja konfiguracija), kao i u načinu rada 1C: Enterprise pri obavljanju radno intenzivne obrade: na primjer, prilikom pisanja velike base64 datoteke.

Ova greška se može pojaviti ne samo u programu 1C, već iu drugim programima operativnog sistema Windows.

Stvar je u tome da u 32-bitnim operativnim sistemima podrazumevano postoje 2 gigabajta za razne programe i isto toliko za operativni sistem. U 64-bitnom OS-u, količina memorije koja je dodijeljena aplikacijama je već 4 gigabajta.

Slijedom navedenog, potrebno je povećati veličinu dodijeljene adresne memorije za aplikacije, a to je program 1C. To se može učiniti na dva načina: prebaciti se sa 32-bitnog sistema 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 komandnu liniju operativnog sistema. Da biste to učinili, idite na izbornik Start i upišite "cmd" u traku za pretraživanje.

Pred vama će se prikazati pretraga programa. Odaberite onaj koji se zove “cmd”.

Takođe možete otvoriti komandnu liniju koristeći kombinaciju prečaca Windows + R.

U prozoru koji se otvori unesite sljedeću naredbu i pritisnite “Enter”:

bcdedit /set povećanjeuserva 3200

U tom slučaju ćete povećati količinu adresne memorije na 3200 megabajta.

Nakon što ste uspjeli, toplo se preporučuje da vratite prethodnu količinu adresne memorije. Ova mjera je privremena, jer pri dodjeli memorije za aplikacije operativni sistem ima manje. Ovo može ugroziti stabilnost Windows-a.

Da biste vratili memoriju adresa na zadanu vrijednost, možete koristiti sljedeću naredbu koja se također upisuje u komandnoj liniji:

bcdedit /deletevalue povećavauserva

Imajte na umu da kod uobičajene greške "Nedostaje memorije" u 1C, brisanje označenih objekata također može pomoći. Možda ih je program akumulirao mnogo i programu je teško obraditi takve količine podataka. Ako ova metoda ne pomogne, trebali biste povećati bitnost operativnog sistema Windows.

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

Rješavanje problema na klijentskom računaru

Razlozi za ovu grešku ne leže u potpunosti u 1C sistemu, jer sličnu grešku možete vidjeti i u drugim aplikacijama. Problem je u tome što se u operativnim sistemima porodice Microsoft po defaultu za svaku aplikaciju dodeljuje određena količina memorije. Za 32-bitne sisteme ova vrijednost je postavljena na 2 GB, za 64-bitne sisteme - 4 GB. Kada softver premaši ovu vrijednost, na monitoru se pojavljuje prozor s greškom.

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

Drugo rješenje za 32-bitne sisteme je prelazak na 64-bitnu verziju ili dodjela više memorije aplikacijama. Prva opcija je mnogo ispravnija, ali ponekad je iz raznih razloga nemoguća. Zatim postoji samo opcija sa algoritmom akcije prikazanom u nastavku, ali treba je koristiti vrlo pažljivo - može doći do značajnih problema s performansama cijelog sistema.

Ovaj algoritam je prilično jednostavan:

  1. Otvorite Windows komandnu liniju. Koristite Start meni ili kombinaciju tastera Windows +R i unesite komandu “cmd”;
  2. U prozoru koji se pojavi upišite naredbu „bcdedit /set povećanjeuserva 3200“ (na primjer, povećaćemo ograničenje na 3,2 GB). Vrijedi pažljivo i postepeno povećavati granicu;
  3. Nakon što potvrdite uspješan završetak operacije u prozoru komandne linije, ponovo pokrenite računar i pokušajte ponovo sa koracima koji su doveli do greške. Ako problem ne nestane i 1C se i dalje ruši, možete ponovo povećati ograničenje;
  4. Nakon uspješnog završetka operacije bez greške u 1C, vratite zadana ograničenja Windowsa naredbom "bcdedit /deletevalue Povećanjeuserva". Ovo je neophodan korak kako OS ne bi ugrozio svoje performanse zbog 1C i drugih aplikacija.

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

Poruku da nema dovoljno memorije na serveru tokom ažuriranja ili velike operacije trebalo bi da shvatite mnogo ozbiljnije. Problem može biti neblagovremeni završetak procesa pokrenutih raznim softverima, što rezultira njihovim „slojenjem“ i gomilanjem u virtuelnoj memoriji. Drugi izvor takve greške je intenzivan rad različitih programa sa rezervisanjem i oslobađanjem memorije. Postoje različiti softveri za rješavanje ovih problema, ali praksa pokazuje da uzrokuje prekide veze i padove 1C.


Ovakve greške navode vas da se zapitate da li je 1C server dovoljno moćan. Povećanje kapaciteta će koristiti kompaniji, ali ova greška se može zaobići na druge načine koji ne zahtijevaju injekciju gotovine.

Naravno, ne biste ih trebali koristiti stalno, ali jednog dana mogu vam pomoći da hitno obavite posao koji zahtijevaju resurse ako je potrebno. Među popularnim metodama koje mogu pomoći u rješavanju greške nedovoljne memorije na serveru su:

  • Ponovno pokretanje 1C radnih procesa, što će dovesti do smanjenja korištene memorije. Ova je opcija prikladna samo za iskusne administratore koji razumiju administrativnu konzolu 1C servera;
  • Koristeći tehnološku evidenciju, pronađite tabelu koja, kada se učita, dobija grešku „Nedovoljno memorije“ tokom ažuriranja ili druge operacije. Ako se pojavi greška prilikom rada s tablicom “config”, tada provjerite konfiguraciju sa zastavicom “Provjerite logički integritet konfiguracije”. Ovu funkciju možete pronaći u konfiguratoru u meniju „Konfiguracija“.
  • Još jedna uobičajena greška 1C javlja se kada nema dovoljno prostora na tvrdom disku na serveru. Privremene tabele 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, jer se dizajn servera 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 servera, povećanje slobodnog prostora, optimizaciju upita i ažuriranje verzije.


    U kompanijama sa velikim brojem korisnika, greška "Nedovoljno slobodne memorije na serveru 1C: Enterprise 8.3" se javlja prilično često. Veliki problem i preduslov za to je nedovoljna analiza potrebnih performansi. Stoga, kada implementirate 1C, obratite veliku pažnju na dovoljnu snagu servera kako u budućnosti ne biste morali prilagođavati performanse na račun stabilnosti.

    Ista situacija se može desiti tokom generisanja velikog izveštaja, izvršenja, prilikom izvršavanja, učitavanja velike baze podataka itd. Imajte na umu da se to dešava kada se izvode neke velike operacije koje zahtevaju određenu količinu računarskih resursa. Štoviše, u normalnom načinu rada 1C program radi relativno normalno.

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

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

    Nakon dodavanja više RAM-a našem računaru, greška se ponovo pojavljuje. U ovom slučaju, razlog leži u ograničenoj alokaciji adresne memorije od strane operativnog sistema za softver:

    • u 32-bitnim operativnim sistemima, podrazumevano se 2 GB dodeljuje za različite programe i isto toliko za operativni sistem,
    • u 64-bitnim operativnim sistemima - kapacitet memorije je već 4 GB.

    Kada radite s 1C i izvodite operaciju, možete koristiti Task Manager pratiti proces opterećenja procesora i slobodnu količinu memorije. U našem slučaju, tokom ažuriranja ova brojka se približila nuli i u tom trenutku se pojavila greška „Nedovoljno memorije“. Pokreni Task Manager moguće pritiskom na tastere Ctrl+Alt+Del i otvaranje kartice Performanse, pratite ove indikatore.

    Stoga moramo povećati veličinu dodijeljene adresne memorije za aplikacije (uključujući 1C). Ovo se može uraditi na dva načina: prebaciti se sa 32-bitnog sistema na 64-bitni sistem ili povećati podrazumevanu količinu dodeljene 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.

    Dolaze do grešaka. Pogledat ćemo jedan od njih, posvećen temi "Nedovoljno slobodne memorije na serveru 1C: Enterprise".

    Metoda za otklanjanje greške "Nema dovoljno slobodne memorije na serveru 1C: Enterprise."

    Kapacitet memorije radnih procesa pri radu na 1C agent serveru nije beskonačan. Kada je maksimalno opterećen, korisnik vidi poruku koja oduševljava svojom novinom - "Nema dovoljno slobodne memorije na serveru 1C: Enterprise."


    Prvo, hajde da pričamo o razlozima za ovu vrstu poruka – zašto nema dovoljno memorije. Može ih biti nekoliko:

    Nedovoljna snaga gvožđa

    Ako u sistemu radi do pet ljudi, tada će biti dovoljan jedan računar od osam gigabajta sa dva vijka (na jednom - SERVER, na drugom - SQL) i dodatno instaliranim čipovima. Ali druga je stvar - tridesetak korisnika, hiljade primarnih dokumenata. Ovdje SQL treba premjestiti na poseban server, a terminalski server se ne može nositi sam.

    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 dobija dodatni prtljag u obliku ponora metapodataka objekata, dodatnih SQL tabela i neiskorištenih detalja. Konstantna registracija i ponovno indeksiranje svih ovih nepotrebnih stvari u programskim registrima traje dugo i puno prostora.

    Greške kodiranja

    Preopterećenje servera se dešava i kada programeri (ponekad) ne razumiju određene procese i uvedu svoje “štake” koje povećavaju vrijeme potrebno za obavljanje dodijeljenih zadataka (i broj radnih procesa).

    Programske greške

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

    Dakle, šta učiniti sa 1C serverom?

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

    Ponovno pokretanje usluge servera

    Najbrže i najjednostavnije rješenje je ponovno pokretanje serverske usluge. Iz komandne linije Microsoft Windows (cmd): za zaustavljanje pokrenite naredbu - net stop "1C:Enterprise 8.3 (ili vaša verzija) Server Agent", a za pokretanje - net start "1C:Enterprise 8.3 (prema vašoj verziji) Server Agent". Ovo rješenje ne rješava problem u potpunosti - najčešće se greška ponavlja. Učestalost njegovog ponavljanja zavisi od broja klijenata i broja radnih procesa.

    BITAN. Da biste mogli ponovo pokrenuti, morate imati odgovarajuća prava.

    Automatsko ponovno pokretanje i postavke klastera

    Ponekad čak i jedan tekući radni tok može zauzeti gotovo svu RAM memoriju. Ovaj problem se rješava povećanjem njihovog broja u postavkama klastera. Oni dodaju otprilike jedan proces na svakih petnaest do trideset korisnika.

    Interval ponovnog pokretanja. Malo prije nego što se prethodni završi, počinje novi proces rphost.exe. - Na njega se prenose veze sa starog. Dozvoljena veličina memorije - ako je ova vrijednost prekoračena, pokrenut će se drugi tajmer za odbrojavanje.

    Interval za prekoračenje granične količine - kada tajmer premaši ovu vrijednost, pokrenut će se novi proces. I priključci sa starog će biti spojeni na njega. A stari je zauzvrat označen kao neaktivan. Isključeno zaustavi procese nakon - nakon što vrijednost ovog parametra prođe nakon označavanja toka posla kao neaktivnog, operativni sistem će ga prekinuti. Ako navedete ovaj parametar jednak “0”, tada se svi neaktivni procesi neće automatski prekinuti.

    BITAN. Ovu postavku karakteriše činjenica da isključuje iz baze podataka samo klijenta koji je pokrenuo netačan izveštaj. A ostatak će se glatko prebaciti na nove veze (bez prekida iz njihove baze).

    Broj radnih procesa

    Ako je rphost.exe preopterećen pozadinskim poslovima i nisu kreirani novi procesi, morate provjeriti postavke:

    Max. Veličina memorije radnih procesa je ukupna količina memorije za sve procese zajedno. Mjereno u bajtovima. Ako postavite pogrešnu vrijednost (neadekvatno normalnom radu), svi će dobiti grešku "Nema dovoljno slobodne memorije na 1c serveru."

    Sigurna potrošnja memorije po pozivu - kontroliše potrošnju memorije tokom poziva od strane servera (u bajtovima). Ako poziv koristi više od navedenog broja, bit će dovršen unutar klastera. Neće se ponovo pokrenuti. A gubitak sesije neće uticati na druge klijente.

    Količina memorije za procese do čije vrijednosti server sistem smatra produktivnim - kada se ova vrijednost dostigne, server klastera prestaje da prihvata veze. Broj informacionih baza po procesu - izoluje sigurnost informacija po procesu. Nakon izolacije informacionih baza (unošenjem vrijednosti “1”), problemi se obično rješavaju.

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

    Nivo tolerancije grešaka - pokazuje broj servera koji, ako pokvare, neće uzrokovati hitno gašenje klijenata. U tom slučaju, backup servisi će se automatski pokrenuti u potrebnoj količini.

    Režim dijeljenja opterećenja - ima dvije moguće opcije. Ako postavite “Prioritet na performanse”, tada će se memorija servera trošiti više radi povećanja performansi. Kada odaberete "Prioritet memorije", 1C klaster će uštedjeti memoriju.

    Alat za baze podataka

    Za rad sa bazom podataka morate koristiti MS SQL DBMS.

    Provjera konfiguracije

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

    Razmotrili smo razloge za nedostatak slobodne memorije na 1C serveru i moguće načine da se to eliminira. Jedna od metoda sigurno će riješiti problem.

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

    • Prilikom ažuriranja konfiguracije;
    • Prilikom pokretanja aplikacije;
    • Prilikom generiranja izvještaja;
    • Prilikom izvođenja velikih proračuna (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čunaru. Međutim, dodavanje dodatnih RAM stickova na uređaj ne rješava uvijek problem.

    Šta određuje veličinu dostupne memorije

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

    S obzirom da je polovina adresnog prostora virtuelne memorije alocirana za potrebe samog sistema, aplikaciji ostaje samo 2GB. Kada je program pokrenut, 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 ponovnog instaliranja operativnog sistema, postoje dvije opcije za ispravljanje situacije:


    Koristeći ove metode, možete smanjiti adresni prostor dodijeljen operativnom sistemu na 1GB, povećavajući memoriju za aplikaciju na 3GB.

    Pažnja! Ručnim dodjeljivanjem memorije možete naići na probleme u radu vašeg osobnog računara, sve do potpunog zaustavljanja sistema.

    Uklanjanje linije iz datoteke boot.ini ili pokretanje naredbe i zamjena parametra 2900 sa 2000 vraća sistem u prvobitno stanje.

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

    Nedovoljno memorije prilikom generiranja izvještaja

    Ne baš često, ali ova greška se javlja kada se pojave izvještaji. U ovom slučaju, obrada generisanja tabelarnog dokumenta kasni i na kraju se završava sa prozorom, kao na prvoj slici.

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

    Ako se greška ne pojavi u standardnom izvještaju (kao što je kartica računa ili bilans stanja), a imate pristup izvornom kodu za obradu, provjerite da li se u upitu formiraju privremene tabele. Snimljeni u RAM-u i postojeći do kraja zahtjeva, mogu značajno pojesti resurse slabog računara.

    Općenito, da bi se izbjegle takve situacije, toplo se preporučuje uništavanje privremenih tablica u upitu odmah nakon što više nisu potrebne.

    Curenje memorije na serveru

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

    Rice. 3.

    Želio bih posebno govoriti o razlozima ovakvog ponašanja servera.

    Općenito, izraz “curenje memorije” je pomalo netačan, bolje je reći da se memorija pohranjuje, slojevita; Programi koji pokreću procese zaboravljaju da ih prekinu na vrijeme. Kao rezultat toga, oni se akumuliraju u RAM-u.

    Drugi razlog je fragmentacija memorije. Ako dođe do intenzivnog rezervisanja i oslobađanja RAM-a tokom rada servera, u jednom trenutku može nastati situacija kada je količina slobodne memorije dovoljna, ali je nemoguće uhvatiti kontinuirani blok memorijskih adresa dovoljne veličine.

    Drugi problem možete riješiti korištenjem sistemskih uslužnih programa.

    Kao rezultat toga oni mogu:

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

    Fig.4

    1. Pojavljuju se greške i zamrzavanja pri istovaru baze podataka;
    2. Postoje skokovi u memoriji koju zauzimaju 1C procesi.

    Greške ažuriranja

    Ova opcija male memorije se javlja kada pokušate ažurirati konfiguraciju na trenutno izdanje. Može se povezati ili s velikim brojem pokrenutih aplikacija ili s greškama u bazi podataka.

    Prva radnja kada se pojavi ovaj problem je pokretanje ažurirane baze podataka u modu konfiguratora i izvršenje njenog restrukturiranja (stavka menija Administracija->Testiranje i ispravljanje), iako je bolje obaviti cijeli niz poslova na ispravljanju grešaka i ponovnom indeksiranju tabela .