1c enterprise 8.2 si blocca all'avvio del configuratore. Come chiudere un programma bloccato

Il reclamo degli utenti "1C si blocca", ben noto agli specialisti IT, ha molte ragioni. Per effettuare una "diagnosi" corretta, identificando e analizzando un problema, è necessario riprodurlo, poiché un problema che non può essere riprodotto è, di regola, quasi impossibile da risolvere. Avendo compreso i sintomi del congelamento 1C, faremo il primo passo verso un sistema che funzioni in modo efficiente.

Avvio del sistema molto lungo

Avvio lungo una configurazione pesante sotto un utente per la prima volta dopo aver aggiunto la sicurezza delle informazioni all'elenco dei database sul computer è un fenomeno normale. Durante il primo avvio, la configurazione viene memorizzata nella cache. La seconda e le successive esecuzioni dovrebbero essere più veloci.

L'avvio del sistema che richiede molto tempo può indicare problemi con l'implementazione architetturale della configurazione. La maggior parte della configurazione viene letta dalla piattaforma solo la prima volta che si accede all'oggetto metadati desiderato. Un avvio lungo indica la probabilità di utilizzo elevato numero oggetti di metadati (molte chiamate a vari moduli comuni, elaborazione, ecc.).

Va tenuto presente che la prima volta che si accede al testo di qualsiasi modulo, questo viene compilato. Anche questo processo richiede tempo, il che è particolarmente evidente se i moduli sono molti. Pertanto, il problema dell'avvio lento viene risolto modificando (ottimizzando) la configurazione, il cui scopo è disabilitare l'esecuzione di tutti gli algoritmi opzionali che vengono eseguiti all'avvio del sistema.

È possibile che la configurazione stia tentando di leggere dati da Internet all'avvio. Ciò aumenta anche il tempo di avvio del sistema.

Apertura delle forme molto lunga

L'apertura prolungata dei moduli può essere dovuta a:

  1. Un gran numero di controlli sul modulo: il tempo viene dedicato alla creazione del modulo e all'interconnessione della disposizione degli elementi del modulo;
  2. Esecuzione di algoritmi durante l'inizializzazione del modulo. È possibile che durante la creazione del modulo vengano verificate alcune condizioni e/o letti gli oggetti correlati dal database.

Il primo problema viene “trattato” semplificando la forma. Ad esempio, alcuni controlli possono essere posizionati in moduli separati, il che può essere ancora più comodo per l'utente. Ad esempio, se il modulo ha un campo indirizzo "Città", "Via", "Casa", ecc., è meglio modificare l'indirizzo in un modulo separato.

Il secondo problema viene risolto analizzando le azioni eseguite durante la creazione e l'apertura di un modulo e ottimizzando questi algoritmi. Forse alcuni algoritmi sono già obsoleti, mentre altri possono essere semplificati e ottimizzati, ad esempio eliminando o minimizzando l'accesso ai dati nel database.

Come azione interattiva, considera l'utente che tenta di selezionare un valore su un elemento del modulo. In risposta a ciò, il sistema “pensa a qualcosa”. Ciò può accadere per i seguenti motivi:

  1. Gli algoritmi eseguiti in questa azione esaminano o calcolano i dati associati che influenzano il comportamento di selezione del valore;
  2. Il modulo di selezione che si apre per selezionare questo valore legge tutti gli oggetti dal database una volta inizializzato.

Per risolvere il primo problema, dovresti utilizzare la “Misurazione delle prestazioni”, trovare algoritmi ad alta intensità di risorse e ottimizzarli.


Il secondo problema spesso può essere risolto semplicemente analizzando l'implementazione del modulo di scelta. Ad esempio, dovresti assicurarti che la proprietà "Lettura dati dinamica" sia impostata per un elenco dinamico, che la proprietà "Tabella principale" sia impostata correttamente e che l'implementazione dell'elenco non utilizzi algoritmi ovviamente ad alta intensità di risorse.

Ci sono anche situazioni in cui, all'apertura del modulo di selezione, vengono letti alcuni dati correlati dal database (ad esempio, all'apertura del modulo di selezione “Articolo”, vengono letti i saldi delle merci nei magazzini). In genere questo non lo è La migliore decisione. È preferibile leggere i dati correlati in modo asincrono, dopo aver aperto il modulo. Ciò causerà meno disagio all'utente, perché Dopo la visualizzazione del modulo, l'utente impiegherà del tempo per elaborare il modulo aperto e questo tempo potrà essere impiegato per caricare i dati correlati.

Risposta molto lunga agli aggiornamenti

Uno dei sintomi banali, tuttavia, può indicare alcuni problemi di sistema: l'aggiornamento 1C si blocca quando si avvia un backup. Ciò accade principalmente durante l'aggiornamento via Internet e, molto probabilmente, indica che la configurazione non è stata aggiornata da molto tempo e che i rilasci, susseguindosi uno dopo l'altro, hanno causato un blocco. Puoi prevenire un problema del genere installando gli aggiornamenti in modo tempestivo e, se lo riscontri, puoi semplicemente interrompere il processo di backup. Dopo aver avviato il configuratore, il database si avvierà con le modifiche apportate in modalità normale.

Va notato che 1C 8.3 si blocca molto spesso durante gli aggiornamenti anche perché richiede hardware più dispendioso in termini di risorse rispetto a versione precedente piattaforme. Vale la pena prestare attenzione alla quantità di RAM e, se necessario, aumentarla: questo, in linea di principio, dovrebbe aiutare a risolvere il problema "1C si blocca durante l'aggiornamento della configurazione".

Lungo processo di registrazione di oggetti/realizzazione di documenti

In questo caso il “trattamento basato sulla fotografia” è praticamente escluso, poiché le ragioni possono essere le più diverse, dalla grande quantità di dati nell'oggetto all'attesa alle serrature.

Ma anche in QUESTO caso è possibile delineare una direzione di analisi.

L'assenza di variazioni significative nel tempo di registrazione dovute all'ora del giorno o al numero di utenti (come stima approssimativa e soggettiva) indica un problema nel codice o nella quantità di dati dell'oggetto. Per l’analisi è opportuno utilizzare lo strumento “Misurazione delle prestazioni”.

Un cambiamento drammatico nel tempo di registrazione con dipendenze poco chiare richiede l'esecuzione di un'analisi statistica del verificarsi del problema, ad es. analisi di performance. Il modo più semplice è analizzare l'utilizzo del registro. Un ulteriore vantaggio è che la piattaforma 1C:Enterprise 8 supporta il salvataggio dei dati di registro in un file in formato SQLite. Ciò ti consentirà di utilizzare query SQL per analizzare i dati di registro. È del tutto possibile ottenere l'ora di scrittura dell'oggetto dai dati di registro, dato che ogni scrittura dell'oggetto viene eseguita in una transazione e ogni transazione ha il proprio numero di identificazione.


Se il risultato dell'analisi statistica ha mostrato che il tempo di registrazione di un oggetto dipende dall'ora del giorno e non dal numero di utenti, è necessario analizzare il carico sul server 1C e sul server del database. È possibile che il server stia eseguendo processi di routine che occupano risorse non necessarie.

Se il tempo necessario per scrivere gli oggetti dipende dal numero di utenti, il problema è molto probabilmente nel codice (eventualmente in attesa dei lock) o in larghezza di banda attrezzatura. Per risolverli, dovresti coinvolgere uno specialista con la competenza “1C: Esperto in questioni tecnologiche", poiché non esistono regole unificate per risolvere un simile problema.

Se qualche programma ha smesso di rispondere, non risponde né al mouse né alla tastiera, e magari appare anche il messaggio “il programma non risponde”, si parla di programma bloccato.

A volte capita che un programma bloccato non interferisca con il tuo lavoro, ma a volte, al contrario, a causa di un programma bloccato, il lavoro dell'intero sistema operativo può rallentare. In ogni caso, il problema deve essere risolto, qualcosa deve esserlo Fatto.

Cosa non fare:

1) Estrarre la spina dalla presa- questo è l'errore più grande che puoi fare in questa situazione. Un'improvvisa interruzione di corrente è molto stressante per il tuo computer. Questa voce include anche lo spegnimento del computer utilizzando il pulsante di avvio unità di sistema e spegnere premendo l'interruttore di alimentazione. L'essenza di questi metodi è la stessa: interrompi la fornitura di elettricità.

2) Premere il pulsante di ripristino– questo pulsante si trova sulla parte anteriore dell'unità di sistema e serve per forzare il riavvio. Dovrebbe essere premuto solo nelle situazioni più disperate, quando altri metodi non aiutano.

3) Fai movimenti inutili– se a causa di un programma bloccato il tuo sistema inizia a rallentare molto sistema operativo, qualsiasi azione non necessaria non farà altro che peggiorare la situazione. Per azioni non necessarie intendo provare a riavviare un programma bloccato (in nessun caso dovresti farlo), avviare altri programmi, aprire il menu Start o un altro menu. Se la situazione è particolarmente critica, non dovresti semplicemente muovere il mouse, poiché il cursore potrebbe bloccarsi e sarà più difficile risolvere il problema.

4) Aspetta molto tempo– di norma basta aspettare cinque minuti per capire che il programma si è bloccato; se avete un computer debole, dategli 15-20 minuti. Di solito è inutile aspettare ulteriormente.

5) Sii nervoso– dare un calcio all’unità di sistema o sbattere la tastiera sul tavolo non aiuterà la questione. Ho scritto appositamente questo punto, perché per ragioni sconosciute le persone a volte lo fanno (probabilmente a causa del nostro passato, quando un televisore a tubo non voleva funzionare, di solito lo colpivano con la mano e questo ha aiutato). Un computer non è un televisore a tubo, quindi non colpirlo.

Cosa dovrebbe essere fatto

Devi provare a chiudere il programma, se fare clic sulla croce nell'angolo in alto a destra e la combinazione alt + f4 non aiuta, allora devi fare quanto segue:

Premere la combinazione di tasti per aprire il task manager:

Per Windows XP “Ctrl+Alt+Canc”.

Per Windows 7 “Ctrl + Maiusc + Esc”.

Nel task manager, vai alla scheda "Applicazioni", se il tuo programma è visualizzato nella sezione attività, selezionalo e fai clic sul pulsante "Termina attività". Se non si verifica alcuna reazione immediata, non è necessario premere nuovamente questo pulsante, è sufficiente attendere un po'. Dopo un po' apparirà una finestra che avverte che i dati potrebbero andare persi, sarà necessario cliccare sul pulsante “Fine adesso”. Per un esempio, guarda lo screenshot (ho completato programma di lavoro, quindi il tuo testo sarà diverso, ma il principio è lo stesso).

Se non riesci a terminare il programma in questo modo, fai clic con il pulsante destro del mouse sul programma bloccato e seleziona "Vai al processo" dal menu a discesa. Verrai automaticamente indirizzato alla scheda “Processi”, il processo richiesto sarà già evidenziato, ti basterà cliccare sul pulsante “Termina processo”.

Se il programma congelato non viene visualizzato nella scheda "Applicazioni", è necessario andare alla scheda "Processi", trovare il processo del programma congelato e terminarlo. Il modo più semplice per cercare un processo è per nome; è anche possibile effettuare la ricerca in base al grado di carico del processore; in genere per un'applicazione bloccata questa percentuale è elevata;

L'impatto del blocco sulle prestazioni di 1C:Enterprise 8

Il team gilev lavora da molti anni sui problemi di prestazione e ha risolto con successo, tra le altre cose, il problema dell'eliminazione delle attese su lock e deadlock.

Di seguito descriveremo la nostra esperienza nella risoluzione di questi problemi.

Rilevamento di problemi di blocco in 1C

I problemi di prestazioni in modalità multiplayer non sono necessariamente legati a codice o hardware difettosi. Innanzitutto dobbiamo rispondere alla domanda: quali problemi di prestazioni esistono e cosa li causa?

È impossibile tracciare manualmente le attività di centinaia di utenti; è necessario uno strumento che automatizzi la raccolta di tali informazioni.

Esistono molti strumenti, ma quasi tutti presentano uno svantaggio molto significativo: il prezzo.

Ma c'è una via d'uscita: scegliamo

Esamineremo il problema su MS SQL Server, quindi avremo bisogno dei seguenti servizi da questo set:

1. Monitoraggio e analisi delle richieste lunghe(maggiori informazioni sulla costituzione qui) - necessario per valutare se ci sono operazioni a lungo termine per il sottod.

In realtà, il fatto della loro presenza ci permette di dire che ci sono problemi di prestazioni, e i problemi risiedono nelle righe del codice di configurazione 1C, che il servizio classificherà in base all'importanza. I problemi in cima all’elenco devono essere risolti per primi. Tali soluzioni alle linee problematiche porteranno l'effetto maggiore, ad es. sarà di grande beneficio e vantaggio per gli utenti del sistema.

(leggi di più qui) ci permetterà di valutare se il tempo delle richieste lunghe (lunghe) è effettivamente causato dall'attesa dei lock oppure ci sono altri motivi (codice non ottimale, hardware sovraccarico, ecc.) Il servizio mostrerà il motivo dell'interruzione l'attesa da parte della richiesta, ovvero la risorsa che è stata bloccata e chi l'ha bloccata. Quelli. comprenderemo la presenza di problemi bloccanti e le loro cause.

3. Analisi dei blocchi reciproci nel server 1C e MS SQL(maggiori informazioni sulla configurazione qui) - ci consentiranno di valutare di più situazioni difficili con l'attesa delle risorse, quando diversi partecipanti sono già riusciti a “catturare” alcune risorse bloccandole e ora sono costretti ad aspettarsi a vicenda perché non possono rilasciare le risorse occupate finché non viene completata la cattura di altre risorse bloccate dai vicini.

In generale, una situazione così difficile non può essere risolta manualmente, è necessario un tale servizio.

4. Controllo del carico dell'attrezzatura(maggiori informazioni sulla configurazione qui) ci aiutano a rispondere alle domande: quanti utenti sono presenti nel sistema, hanno blocchi, quanti blocchi, l'hardware può far fronte al carico?

I servizi sono molto facili da configurare, ma anche se hai ancora domande, ce ne sono!

Utilizzando gli strumenti sopra elencati, disponiamo di informazioni oggettive sulle prestazioni del sistema. Ciò ci consente di valutare correttamente la situazione e proporre misure adeguate.

Infatti, riceviamo informazioni su tutti i problemi di prestazione e possiamo rispondere con precisione a domande come “quanti problemi ci sono nel sistema”, “dove si verificano esattamente”, “ciascun problema con quale frequenza esatta si verifica”, “quali problemi sono significativi e quali minori”. Quelli. vediamo tutti i prerequisiti che hanno costituito la causa del problema.

I servizi ti consentono di migliorare significativamente la tua comprensione delle condizioni in cui sorgono i problemi, senza costringerti ad approfondire manualmente cose come la struttura di archiviazione dei dati della base informativa a livello DBMS, il meccanismo di blocco, ecc.

Di conseguenza, otteniamo un quadro delle prestazioni che vengono misurate

— tempo di richiesta (ovviamente, classificando le richieste problematiche in base al peso (tempo di richiesta in base al numero di chiamate a tale richiesta);

— tempo di attesa per le serrature;

Pertanto, abbiamo lanciato il servizio Analisi delle aspettative sul blocco

Nella tabella in alto, il servizio riporta l’elenco delle “vittime” del blocco, tenendo conto del peso complessivo del “peso delle aspettative”.

Nella tabella inferiore, per ciascuna vittima vengono considerati uno o più partecipanti alla “lotta per una risorsa altamente competitiva”, dove nasceva l'attesa per il blocco.

Nella tabella inferiore, apri i dettagli di uno degli eventi di “timeout”. Come nella foto per esempio.

Evidenziando la riga con il “colpevole”, vedremo che il collo di bottiglia era la tabella _Reference64, e si è verificato un problema sull'indice cluster con l'area “sconosciuta”. Forse in futuro lo ribattezzeremo “tabella”, poiché in effetti questo comportamento è tipico per aumentare/allargare l'area di blocco.

La riga con la “vittima” mostra quale codice era ostaggio della situazione e non poteva bloccare tutto, solo la riga “per chiave” (l'area minima di blocco dei dati in questa tabella).

Questo problema può essere risolto “correttamente” e “facilmente”.

Di il modo giustoè più difficile da fare: in effetti, è necessario riscrivere il codice, riducendo al minimo la probabilità che si verifichino tali situazioni.

Uno dei fattori, per quanto strano possa sembrare, è una diminuzione della durata.

Puoi ridurre la durata della transazione:

1. riscrivere l'algoritmo

2. riscrivendo la query (una query più veloce riduce la probabilità di blocchi in transazioni complesse su tabelle, che a volte potrebbero anche non essere presenti nella query!)

2.1 aggiunta dell'indice di copertura mancante (a volte un indice non solo velocizza la query, ma riduce anche l'area di lettura dei dati, riducendo così la probabilità di blocco)

3. ridurre la quantità di dati trattati in una transazione (oltre alla velocità lineare ricordiamo anche la lock escalation)

4. aumentare la produttività delle apparecchiature all'interno di ciascun flusso

Richiedi l'ora di esecuzione

1) utenti diversi possono lavorare in parallelo con dati diversi
2) utenti diversi devono lavorare in modo rigorosamente sequenziale con gli stessi dati

È possibile però ottimizzare l’utilizzo delle serrature, riducendo così i tempi complessivi di attesa.

Come funziona il blocco (non è necessario leggere questo paragrafo)

Uno speciale modulo SQL Server, Lock Manager, gestisce i blocchi. I suoi compiti includono:

  • creazione e installazione di serrature;
  • sbloccaggio;
  • escalation del blocco;
  • determinare la compatibilità del blocco;
  • eliminando le situazioni di stallo e molto altro ancora.

Quando un utente effettua una richiesta di aggiornamento o lettura di dati, il gestore delle transazioni DBMS passa il controllo al gestore dei blocchi DBMS per determinare se le risorse richieste sono state bloccate e, in tal caso, se il blocco richiesto è compatibile con quello corrente. Se i blocchi sono incompatibili, l'esecuzione della transazione corrente viene ritardata finché i dati non vengono sbloccati. Una volta che i dati sono disponibili, il gestore del lock acquisisce il lock richiesto e restituisce il controllo al gestore delle transazioni.

Il motivo principale che riduce le prestazioni è il blocco

Le attese di blocco rappresentano un grave problema di prestazioni in modalità multiplayer. E questo è comprensibile, perché aumentano i tempi di attesa per le operazioni, e quindi i tempi di risposta. È possibile affermare che l'attesa sui blocchi non sia corretta e sia un errore in un sistema multiutente? Questo non si può dire, poiché lo stesso meccanismo di blocco delle risorse garantisce l'integrità dei dati. Utilizzando il meccanismo di blocco, i dati simultanei vengono SCRIVTI CONSEQUENZIALMENTE.

Differenza tra serrature necessarie e non necessarie

Quando un utente segnala un errore in attesa di un blocco, dal suo punto di vista questo è sempre un errore, perché ad esempio interferisce con il suo lavoro: il tempo necessario per completare il suo lavoro aumenta.

L'esperienza suggerisce una regola semplice: se più della metà del tempo di esecuzione della richiesta è effettivamente in attesa di una risorsa bloccata, allora devi guardare: forse puoi ottimizzare parte del blocco e ridurre il tempo di blocco della risorsa.

Qui, come per caso, introduco una definizione:

Aspettando sul blocco è una situazione che si verifica quando due utenti tentano di acquisire gli stessi dati contemporaneamente. In questo caso, uno di questi utenti viene bloccato, ovvero deve attendere fino al completamento della transazione del primo utente.

Una transazione è un insieme di calcoli e operazioni con dati (la maggior parte fulgido esempio— quando si redige un documento) eseguito nel suo insieme. La mancata esecuzione di una qualsiasi delle operazioni di transazione comporta l'annullamento dell'intera transazione.

Pertanto, gli utenti nelle infobase multiutente possono spesso lamentarsi dell'impossibilità di lavorare a causa di questi blocchi, mentre il codice potrebbe effettivamente avere blocchi che non sono necessari in questo luogo (ridondanti).
E anche nel codice di configurazione, essi stessi potrebbero non essere presenti, puoi leggerli, ad esempio, qui http://kb.1c.ru/articleView.jsp?id=30 (l'articolo è un frammento del libro; di P.S. Belousov, A.V.Ostroverh “1C:Enterprise: da 8.0 a 8.1.”). Offro un modo semplificato per spiegare le differenze tra i blocchi semplice esempio COSÌ:

Nella tua configurazione in modalità 1C:Enterprise, crea due fatture identiche con la stessa composizione di merci. Assicurati però di indicare i diversi magazzini riceventi.
Nel codice di elaborazione della registrazione è necessario aggiungere una riga con un messaggio visualizzato sullo schermo (o altro codice che può ritardare l'esecuzione dell'elaborazione della registrazione di 21 secondi (il timeout del blocco avviene dopo 20 secondi se i parametri sono predefiniti)) .
Pubblica due documenti.
Se si verifica un timeout e logicamente la merce arriva in magazzini diversi, nell'applicazione sono presenti blocchi ridondanti. La logica aziendale (considera il buon senso) non dovrebbe esserci alcun blocco qui.
Se ora realizziamo magazzini identici in queste due fatture. Quindi porterà a un blocco creato a seguito di un tentativo di eseguire un'esecuzione simultanea OBBLIGATORIO il bloccaggio e questo è buono!

Quelli. Mentre la fattura apporta modifiche ai saldi di magazzino, l'altra deve attendere.

Naturalmente, anche questo semplice esempio lascia molte domande. Ad esempio, cosa succede se i documenti provengono da un fornitore e il debito su di esso “si sposta”. E se a muoversi non sono solo i saldi di magazzino, ma diversi registri e documenti di diverso tipo.
Ma la domanda più importante è: CON QUALE LOGICA AZIENDALE NON DOVREBBERO ESISTERE BLOCCHI. Chi prescrive questa logica aziendale e dove nel contesto del blocco? Ma parliamo di tutto in ordine.

I blocchi eccessivi sono blocchi non necessari che non sono necessari dal punto di vista della garanzia dell'integrità dei dati e che allo stesso tempo riducono le prestazioni complessive del sistema, aumentando il tempo di inattività totale - attesa dei blocchi.
Il blocco necessario si verifica quando due utenti acquisiscono le stesse risorse (oggetti dati). Se gli utenti lavorano con risorse non sovrapposte, ma sono in attesa di un blocco, il blocco è considerato ridondante.

I criteri più comprensibili per il blocco della ridondanza sono:

1. Blocchi reciproci;

2. Il livello (area) di blocco è superiore al necessario (come caso speciale aumentando il livello di blocco, il cosiddetto. escalation);

3. Il tempo di chiusura è più lungo del tempo di utilizzo “reale” dell'oggetto di chiusura.

Avendo ricevuto informazioni sui raggruppamenti di problemi nel contesto dei metadati 1C:Enterprise, consiglio di prestare attenzione innanzitutto ai seguenti oggetti:

  • Costanti
  • Sotto sequenza
  • Registri contabili
  • Registri di accumulo
  • Registri di informazione
  • Registri di calcolo

1) Fino a poco tempo fa esisteva la ben nota raccomandazione di non scrivere nulla nelle costanti. In casi estremi, fallo da sotto un utente, e poi ricorda che mentre l'utente “scrive” una costante, non solo questa, ma anche qualsiasi altra costante, gli altri utenti “aspetteranno”. Pertanto, è particolarmente pericoloso utilizzare costanti nell'elaborazione delle transazioni. I valori di tutte le costanti vengono memorizzati V una risorsa.

La figura mostra il posizionamento fisico delle costanti di configurazione SCP in una tabella di database MS SQL Server 2005.

Ciò significa che il blocco di una costante bloccherà tutte le costanti. Il DBMS impone un blocco su TUTTA la singola RIGA della tabella, ovvero per tutte le costanti.

Tuttavia, nelle ultime versioni della piattaforma, la memorizzazione delle costanti è stata modificata. Ora ogni costante è una tabella separata. Non lasciarti trasportare troppo, però, se crei migliaia di tabelle, puoi ottenere un blocco sulla base principale.

Attenzione, se la tua configurazione esiste da molto tempo, allora puoi modificare il formato di archiviazione “ristrutturandola” in Testare e Correggere il configuratore.

2) Smettere di utilizzare l'oggetto metadati Sequence. Almeno dai movimenti quando implementazione operativa, eseguire durante procedure non operative (aggiuntive). Guarda come è implementato in ultime versioni UPP.

3) Se il sistema effettua la registrazione online dei movimenti nel registro contabile in modalità multiutente, allora si consiglia:

  • abilitare la modalità di separazione dei totali per questo registro;
  • Non utilizzare il controllo del bilanciamento del registro durante il lavoro operativo.

4) Nel registro di accumulo, nei casi in cui non sia necessario ottenere dati “operativi”, è possibile abilitare la divisione dei totali, che aumenterà il parallelismo della registrazione dei dati e velocizzerà il lavoro in generale. Monitorare attentamente le misurazioni in modo che i “residui” possano essere ottenuti con il massimo dettaglio nelle misurazioni.

5) Puoi eliminare alcuni dei blocchi ridondanti creati dalla piattaforma solo tramite . Nella modalità operativa automatica delle configurazioni, la piattaforma “si fa carico” delle risorse bloccanti. Prezzo senza preoccupazioni Modalità automatica— sono possibili blocchi ai limiti degli intervalli di indici, blocchi su una tabella vuota ed escalation dei blocchi.

Questi blocchi scompaiono completamente dai dati nella transazione. Cioè, questo interblocco non sarà possibile quando si opera in modalità controllata.

Ho già detto più volte “serrature gestite” e “modalità gestita”. Devi capire che esistono due tipi di serrature:
I blocchi DBMS vengono installati automaticamente a livello DBMS durante l'esecuzione delle query.
1C: I blocchi Enterprise vengono installati automaticamente durante la scrittura (modifica) dei dati e sempre manualmente durante la lettura dei dati.

Un lettore meticoloso dirà che 1C si divide anche in serrature oggetto e non oggetto, ma ora non toccheremo questo approccio.

Ma noto che impone più requisiti alle qualifiche e all'esperienza di uno specialista 1C.

6) Gli indici mancanti (soprattutto nelle query complesse) sono generalmente il fattore principale nel verificarsi di un livello di blocco più elevato del necessario. Quelli. paradosso, da un lato ho detto che prima di ottimizzare la query ho detto che bisogna prima guardare le serrature, ma ora dico che per ottimizzare le serrature bisogna ottimizzare la query. Ho una scusa, il passaggio dalla configurazione ai blocchi gestiti riduce i blocchi non necessari anche in una query non ottimale. Ciò si verifica a causa di una diminuzione del livello di isolamento della transazione, che a sua volta fornisce al gestore dei blocchi DBMS meno motivi per imporre un blocco eccessivo.

I motivi principali del blocco eccessivo (per riassumere quanto sopra)

— errori di progettazione
(il grado di parallelismo è determinato da “quanto finemente vengono tritati i dati”: è possibile lavorare in parallelo con due righe della tabella, lavorare con una riga avverrà solo in sequenza)
(errori nell'utilizzo dei metadati: registrazione di costanti, sequenze, contabilità operativa sui registri contabili)
— blocco eccessivo dovuto a guasto della modalità automatica (combinazione piattaforma-DBMS).
- prestazioni delle query non ottimali
(ad esempio, durante la scansione di una tabella, l'intera tabella è bloccata - area ridondante
e il tempo di blocco aumenta - tempo eccessivo, un ulteriore numero di blocchi aumenta la probabilità di un'escalation di blocchi)

Come puoi vedere, il compito di ottimizzare le serrature è “multiforme”. È necessario essere il più chiari possibile riguardo al “contesto” che ha causato il problema. Su quali risorse, quale codice. Quanto è realmente necessario questo blocco o è ridondante?

Un bambino e un adulto hanno mal di gola. Quando il medico pone la domanda: "Cosa c'è che non va?", il bambino guarderà il medico e urlerà (credetemi, lo so), mentre l'adulto gli indicherà i sintomi della malattia. Queste apparenti differenze indirizzano il medico verso metodi diversi per identificare il problema.
Con un bambino, il medico deve esibirsi molti test, raccogli dati, combinali, esegui analisi e solo dopo formula raccomandazioni. Mentre con un adulto farà diverse domande e, poiché il numero di dati iniziali è piccolo, il tempo per l'analisi e la determinazione del problema sarà notevolmente inferiore. Di conseguenza, le raccomandazioni verranno emanate molto prima.

Utilizza i nostri servizi e avrai più opportunità per analizzare il problema e trovare una soluzione gratuitamente!


Questo articolo ti aiuterà a sbarazzarti dei programmi bloccati. In esso descriverò un metodo che aiuterà terminare un programma congelato Giusto. Dopotutto, spesso per completare un programma, le persone usano metodi a loro noti: si tratta di sequenze di tasti febbrili alt + f4 o semplicemente un pulsante Esc e, nella maggior parte dei casi, ciò non produce risultati. Quindi devi premere l'unico pulsante che ti aiuterà sicuramente: questo è il pulsante sull'unità di sistema o sul laptop per spegnere o riavviare. In questo caso rischi di perdere i dati non solo del programma congelato, ma anche di altri aperti.

Potrebbero esserci diversi motivi per cui il programma si blocca:

  • Se hai 64x sistema di bit() e stai eseguendo un programma progettato per sistemi a 32 bit, nella migliore delle ipotesi il programma semplicemente non si avvierà, nel peggiore dei casi si bloccherà. Sebbene ci sia una sfumatura qui, succede che tali programmi funzionino, ma in modo errato o si blocchino nel tempo.
  • Hai troppo poca RAM per eseguire.
  • Hai troppi programmi e processi in esecuzione che stanno già caricando il sistema.
  • Hai programmi in esecuzione in background che occupano molte risorse di sistema
  • Virus
  • Problemi tecnici (la pasta termica sul processore si è seccata, c'è molta polvere intasata, hardware “debole”, ecc.)

    E ora hai avviato il programma e stai aspettando che venga avviato. E si è fermata durante il processo di caricamento ed è rimasta “in silenzio”. È utile se viene riprodotta musica di sottofondo (essenzialmente per i giochi), può darti un suggerimento sotto forma di loop. Ovviamente puoi aspettare qualche minuto (non più di 5) in previsione di un "miracolo" e che il programma si blocchi, ma se non vuoi aspettare e sai per certo che il programma si è bloccato, allora devi iniziare chiusura dei programmi congelati.

    In modo da terminare un programma che non risponde(così viene chiamato anche il congelamento) è necessario chiamare il Task Manager. Puoi, ovviamente, usare Ctrl+spostare+Esc, ma ti consiglio di utilizzare una scorciatoia da tastiera più conosciuta ed efficace Ctrl+alt+del.

    In Windows 7, quando si premono questi tasti, si aprirà una finestra con cinque opzioni in cui è necessario selezionare l'ultima.


    Nella scheda Applicazioni Cerchiamo un programma bloccato (di solito il suo stato è Non risponde), facciamo clic con il tasto destro su di esso e selezioniamo dal menu Vai al processo:


    Si aprirà una scheda Processi con un processo sospeso dedicato. Qui facciamo semplicemente clic su Termina il processo


    e sono d'accordo con l'avviso di sistema

    Nota:
    Ovviamente puoi selezionare nel menu Task Manager no Vai al processo, UN Annulla attività e questo sarà un metodo più “gentile”, ma a volte non aiuta. E in qualche modo sono abituato a risolvere tali problemi in modo efficace.

    In questo modo è possibile "rimuovere" un programma bloccato senza riavviare il computer e mantenere intatti gli altri programmi in esecuzione.

    Succede questo Explorer non risponde. Con questo intendo che, ad esempio, hai aperto una cartella sul tuo computer o anche solo Risorse del computer e il sistema si è bloccato (inizia a pensare a lungo). Questo è successo anche a me.
    In questo caso anche Task Manager e il metodo sopra descritto possono aiutare.

    Ma qui importante da ricordare Un dettaglio: il processo di Explorer si chiama explorer.exe e al termine tutte le cartelle del computer verranno chiuse. Ma questo è metà del problema. Dopo aver "ucciso" l'esploratore, scomparirà anche il pannello di controllo con il menu Start. Ecco perché Non chiudere subito il Task Manager! Per restituire ciò che manca (ad eccezione delle cartelle aperte), fare clic su File -> Esegui


    e inserisci explorer.exe nella riga


    Naturalmente, fai clic su OK e tutto tornerà al suo posto.

    Come questo modo semplice per risolvere il problema Cosa fare se il programma non risponde o si blocca.

  • Questo articolo discute i fattori principali: quando 1C rallenta, 1C si blocca e 1C funziona lentamente. I dati sono stati preparati sulla base dell'esperienza pluriennale di SoftPoint nell'ottimizzazione di sistemi IT di grandi dimensioni basati sulla combinazione 1C + MS SQL.

    Per cominciare, vale la pena notare il mito secondo cui 1C non è destinato al lavoro simultaneo di un gran numero di utenti, supportato attivamente dagli utenti del forum, che trovano in questi post rassicurazione e motivo per lasciare tutto così com'è. Con sufficiente pazienza e conoscenza, puoi portare il sistema a qualsiasi numero di utenti. Lavoro lento e il congelamento 1C non sarà più un problema.

    Dalla pratica: il modo più semplice per ottimizzare è 1C v7.7 (l'ottimizzazione di 1C 8.1, 1C 8.2, 1C 8.3 è un compito più difficile, poiché l'applicazione è composta da 3 collegamenti). Portarlo fino a 400 utenti simultanei è un progetto abbastanza tipico. Fino a 1500 è già difficile e richiede duro lavoro.

    Il secondo mito: per migliorare le prestazioni di 1C ed eliminare i blocchi di 1C, è necessario installare un server più potente. Di norma, nei progetti di ottimizzazione nel 95% dei casi è possibile ottenere indicatori accettabili sia senza alcun aggiornamento, sia aggiornando una parte minore dell'attrezzatura, ad esempio aggiungendo RAM. Va notato che l'apparecchiatura deve comunque essere basata su server, in particolare il sottosistema del disco. Un sottosistema del disco obsoleto è solo uno dei motivi per cui 1C funziona lentamente.

    La limitazione principale quando si lavora in multiutente in 1C è il meccanismo di blocco. È il blocco in 1C, e non l'apparecchiatura del server, che di solito impedisce a un gran numero di persone di lavorare nel database. Per superare questo problema, devi lavorare sodo e modificare la logica di blocco in 1C, abbassandoli da basati su tabella a basati su righe. Quindi, ad esempio, la registrazione di un documento ne bloccherà solo uno e non tutti i documenti nel sistema.

    Figura 1. Coda di blocco 1C nel sistema di monitoraggio PerfExpert, con informazioni sugli utenti 1C, un modulo di configurazione e una riga di codice specifica in questo modulo.

    La modifica del meccanismo di blocco 1C è una tecnologia molto complessa. Non tutti riescono a realizzare un trucco del genere e per loro rimane solo una strada: ottimizzare la struttura e accelerare i tempi di esecuzione delle operazioni. Il fatto è che il blocco in 1C e il tempo di esecuzione delle operazioni sono indicatori altamente correlati. Ad esempio, se l'operazione di registrazione di un documento richiede 15 secondi, quando grandi quantità utenti, c'è un'alta probabilità che durante la transazione qualcun altro tenti di trasferire il documento e attenda in blocco. Se aumenti il ​​tempo di esecuzione ad almeno 1 secondo, il blocco 1C per questa operazione sarà notevolmente ridotto.

    Più pericolose dal punto di vista del blocco sono le elaborazioni di gruppo, che possono richiedere molto tempo per essere completate e allo stesso tempo causare il blocco 1C. Qualsiasi elaborazione che modifichi i dati, ad esempio ripristinando la sequenza o l'elaborazione batch di documenti, blocca le tabelle e impedisce ad altri utenti di pubblicare documenti. Naturalmente quanto più velocemente vengono eseguite queste elaborazioni, tanto più meno tempo bloccando e facilitando il lavoro degli utenti.

    Anche i report pesanti che eseguono operazioni di sola lettura possono essere pericolosi in termini di blocco, anche se sembrerebbe che non blocchino i dati. Tali segnalazioni influenzano l’intensità del blocco in 1C, rallentando altre operazioni nel sistema. Cioè, se il report è molto pesante e occupa la maggior parte delle risorse del server, è possibile che prima dell'avvio del report le stesse operazioni siano state eseguite per 1 secondo e durante l'esecuzione del report siano state eseguite per 15 secondi . Naturalmente, all’aumentare del tempo di esecuzione delle operazioni, aumenterà anche l’intensità del blocco.

    Figura 2. Carico sul server funzionante in termini di moduli di configurazione, da tutti gli utenti. Ogni modulo ha il suo colore. C'è un chiaro squilibrio nel carico creato da 1C.

    La regola di base per l'ottimizzazione è che l'elaborazione dei documenti dovrebbe richiedere un tempo minimo ed eseguire solo le operazioni necessarie. Ad esempio, i calcoli del registro vengono spesso utilizzati nell'elaborazione della registrazione senza specificare le condizioni di filtro. In questo caso è necessario specificare dei filtri per i registri che permettano di ottenere la migliore selettività, senza dimenticare che, a seconda delle condizioni di filtraggio, il registro deve avere indici adeguati.

    Oltre a lanciare report pesanti, le impostazioni non ottimali di MS SQL e MS Windows possono rallentare il tempo di esecuzione delle operazioni e, quindi, aumentare l'intensità del blocco 1C. Questo problema si verifica nel 95% dei client. Va notato che si tratta di server di organizzazioni serie; interi dipartimenti di amministratori altamente qualificati sono impegnati nel loro supporto e configurazione.

    Il motivo principale non lo è impostazioni corrette server è la paura degli amministratori di modificare qualsiasi cosa su un server in esecuzione e la regola "Il meglio è nemico del bene". Se l'amministratore modifica le impostazioni del server e iniziano i problemi, tutta la rabbia delle autorità si riverserà sull'amministratore negligente. Pertanto, è più vantaggioso per lui lasciare tutto così com'è e non fare un solo passo senza ordini da parte dei suoi superiori, piuttosto che sperimentare sotto la propria responsabilità.

    La seconda ragione è la mancanza di informazioni chiare sui problemi di ottimizzazione della rete. Ci sono molte opinioni che spesso si contraddicono completamente a vicenda. Ogni opinione dedicata all'ottimizzazione ha i suoi oppositori e fanatici che la difendono. Di conseguenza, Internet e i forum hanno maggiori probabilità di confondere le impostazioni del server piuttosto che di aiutare. In una situazione di tale incertezza, l'amministratore ha ancora meno voglia di modificare qualcosa su un server che in qualche modo funziona.

    A prima vista, il quadro è chiaro: è necessario ottimizzare tutto ciò che rallenta il funzionamento del server 1C. Ma immaginiamoci al posto di un simile ottimizzatore: diciamo di avere 1C 8.1 8.2 8.3 UPP e 50 utenti lavorano contemporaneamente. Un giorno terribile, gli utenti iniziano a lamentarsi del fatto che 1C è lento e dobbiamo risolvere questo problema.

    Prima di tutto, guardiamo cosa sta succedendo sul server: e se qualche antivirus particolarmente indipendente stesse effettuando una scansione completa del sistema. Un'ispezione mostra che va tutto bene: il server è caricato al 100% e solo dal processo sqlservr.

    Dalla pratica: uno degli amministratori junior, di sua iniziativa, ha attivato l'aggiornamento automatico sul server, Windows e SQL si sono aggiornati felicemente e, dopo l'aggiornamento, è iniziato un massiccio rallentamento nel lavoro degli utenti 1C o 1C si è semplicemente bloccato.

    Il passaggio successivo è verificare quali programmi caricano MS SQL. L'ispezione mostra che il carico è generato da circa 20 connessioni al server delle applicazioni.

    Dalla pratica: un programma che aggiorna tempestivamente i dati di un sito web è andato in loop e invece di aggiornarsi una volta ogni 4 ore, lo ha fatto continuamente, senza pause, caricando pesantemente il server e bloccando i dati.

    Un'ulteriore analisi della situazione incontra grandi difficoltà. Abbiamo già scoperto che il carico arriva direttamente da 1C, ma come possiamo capire cosa stanno facendo esattamente gli utenti? O almeno chi sono. Va bene se ci sono 10 utenti 1C in un'organizzazione, quindi puoi semplicemente esaminarli e scoprire cosa stanno facendo ora, ma nel nostro caso ce ne sono cinquanta e sono sparsi in diversi edifici.

    Nell'esempio che stiamo considerando la situazione non è ancora complessa. Immagina che il rallentamento non sia avvenuto oggi, ma ieri. Oggi la situazione non si ripete, va tutto bene, ma bisogna capire perché ieri gli operatori non hanno potuto lavorare (si sono lamentati naturalmente solo prima di uscire di casa, visto che a loro piace chiacchierare tutto il giorno, visto che non succede nulla) lavorare, più che lavorare). Questo caso sottolinea la necessità di un sistema di registrazione del server che conservi sempre una cronologia dei principali parametri di funzionamento del server e da cui sia possibile ripristinare la sequenza degli eventi.

    Un sistema di registrazione è semplicemente uno strumento indispensabile per l'ottimizzazione del sistema. Se aggiungi ad esso la possibilità di visualizzare lo stato corrente online, otterrai un sistema di monitoraggio dello stato del server. Ogni progetto di ottimizzazione inizia raccogliendo statistiche sullo stato del server per identificare i colli di bottiglia.

    Quando abbiamo iniziato a lavorare nel campo dell'ottimizzazione, abbiamo provato molti sistemi di monitoraggio dei server, sfortunatamente non siamo riusciti a trovare qualcosa che risolvesse questo problema al livello adeguato, quindi abbiamo dovuto creare un sistema nostro. Il risultato è stato un prodotto unico, PerfExpert, che ha permesso di automatizzare e razionalizzare i processi di ottimizzazione dei sistemi IT. Il programma si distingue per la stretta integrazione con 1C, l'assenza di qualsiasi carico aggiuntivo evidente e l'idoneità ripetutamente dimostrata per l'uso pratico in situazioni di combattimento.

    Tornando al nostro esempio, il risultato più probabile è: l’amministratore dice: “La colpa è dei programmatori che hanno scritto la configurazione. I programmatori rispondono: “Abbiamo scritto tutto bene, è il server che non funziona bene”. E il carro, come si suol dire, è ancora lì. Di conseguenza, 1C rallenta, si blocca o funziona lentamente.

    In ogni caso, per risolvere i problemi di prestazioni 1C, ti consigliamo di acquistare e utilizzare prima il monitoraggio delle prestazioni PerfExpert , questo ti permetterà di prendere la decisione giusta decisione gestionale e risparmiare denaro. Il prodotto è adatto sia per piccoli sistemi informativi 1C:Enterprise - fino a 50 utenti, sia per sistemi - da 1000 utenti. Da luglio 2015 monitoraggio delle performance PerfExpert ricevuto un certificato 1C:Compatibile, superato il test Microsoft e aiuta a risolvere i problemi di prestazioni non solo per i sistemi 1C, ma anche per altri sistemi informativi basati su MS SQL Server (Axapta, CRM Dynamics, Doc Vision e altri).

    Se ti sono piaciute le informazioni, consiglia ulteriori azioni:

    - Se desideri affrontare in modo indipendente i problemi tecnici delle prestazioni 1C (1C 7.7, 1C 8.1, 1C 8.2,1C 8.3) e altri sistemi informativi, allora per te c'è un elenco unico di articoli tecnici nel nostro Almanacco (Blocchi e deadlock, carico pesante sulla CPU e sui dischi, manutenzione del database e ottimizzazione degli indici sono solo una piccola parte dei materiali tecnici che troverai lì).
    .
    - Se desideri discutere problemi di prestazioni con il nostro esperto o ordinare una soluzione di monitoraggio delle prestazioni PerfExpert, poi lascia una richiesta e ti contatteremo al più presto.