Rezolvarea problemei cu scurgeri de memorie ale fluxurilor de lucru ale serverului 1C Enterprise folosind sistemul de operare.
Este cunoscut faptul că există o problemă în urma în funcționarea fluxului de lucru 1C Server 8.1 rphost.exe: datorită platformelor caracteristicile de conectare fiecare client nou la procesul de lucru, crește dimensiunea memoriei ocupate de către fluxul de lucru. În același timp, când clientul este deconectat, volumul ocupat de conexiune nu este eliberat. De asemenea, cantitatea de memorie ocupată de fluxul de lucru poate crește atunci când se execută codul de program. Acest comportament se numește "Pierderi de memorie" sau "Pierderi de memorie". Ca urmare, în cazul în care cantitatea de memorie rphost.exe proces creste mai limita operedelennogo (în cazul meu a fost> 1Gb), fluxul de lucru cu siguranta repornit. Este clar că clienții conectați la acest proces, sunt obtinerea mesajul pe care conexiunea la server este rupt, opriți de lucru și trebuie să se reconecteze. În funcție de numărul de utilizatori și de numărul de fluxuri de lucru care se execută, această problemă are loc cu o frecvență variabilă. În cazul meu - utilizatori de aproximativ 60 și un flux de lucru, o situație similară a avut loc de până la 5 ori pe săptămână. Ie nici despre funcționarea stabilă a sistemului 1C în acest caz, nu vorbim.
Primul pas în rezolvarea problemei a fost creșterea numărului de procese de lucru, ceea ce sa făcut. Cu toate acestea, problema a rezolvat acest lucru numai parțial, restabilirea proceselor de lucru a început să apară mai rar, dar nu a dispărut deloc.
Cel de-al doilea și destul de logic pas este reluarea automată a proceselor de pe server, despre care vreau să scriu.
Deoarece agentul de service pentru Enterprise Server 1C este un serviciu standard, Windows are o modalitate standard de a opri și de a porni servicii din linia de comandă cu comenzile net stop și net start. Este suficient să includeți aceste comenzi în fișierul bat și să configurați programatorul pentru a rula fișierul bat într-un program, am configurat repornirea o dată pe zi, pe timp de noapte. Rețineți că dacă reporniți fluxurile de lucru în timpul orelor de program, toți clienții conectați la serverul 1C Enterprise vor fi dezactivați!
În plus, pentru a dispersa ușor comanda de oprire și pentru a porni serviciul, vom folosi utilul de utilitate sleep.exe, care este ușor de găsit pe Web.
Eșantionare text fișier bat-fișier restart1c.bat:
rem @ echo off
rem \\ ----- porniți scriptul pentru a opri și a porni agentul de server 1C Enterprise ---- \\
set logfile = "stopstartlog.txt"
set timeout = 20
echo.%% timp%%% logfile%
net stop "1C: Enterprise 8.1 agent de server" >>% logfile%
c: \ scripts \ sleep% timeout%
echo.%% timp%%% logfile%
net start "1C: Enterprise 8.1 agent de agent" >>% logfile%
c: \ scripts \ sleep% timeout%
rem \\ ----- sfârșitul scriptului pentru a opri și a porni agentul de server 1C Enterprise ---- \\
Explicarea variabilelor și comenzilor utilizate:
* logfile - fișierul stopstartlog.txt, în cazul în care rezultatele comenzilor vor fi scrise, este plasat în același director ca și liliecul;
** timeout - timpul în secunde;
*** c: \ scripts - directorul în care se presupune că trebuie să plasați programul sleep.exe, fișierul bat și fișierul log;
Din același fișier bat, puteți rula scriptul de backup cu 1C Enterprise imediat după repornirea proceselor. În acest caz, nu veți avea garanția că aveți alți clienți conectați.
Notă necesară: utilizatorul în baza căruia sarcina de a reporni serviciul va trebui să aibă drepturile corespunzătoare pentru a opri și a porni serviciile serverului.
- materialele forumului www.mista.ru;
- Documentație pentru platforma 1C Enterprise 8.1;
- Documentație pentru produsele MS Windows;