Ошибки ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ сбоСв, способных ΠΏΠ°Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ всСй систСмы. Они ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ: ΠΎΡ‚ Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½Ρ‹Ρ… сообщСний ΠΎ "Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅" Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ зависания Π±Π°Π·Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Главная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Ρ‚Π°ΠΊΠΈΠ΅ ошибки часто ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΊΠΈ: ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΎΠ±Ρ€Ρ‹Π²Ρ‹ соСдинСний ΠΈΠ»ΠΈ Π²Π½Π΅Π·Π°ΠΏΠ½Ρ‹Π΅ Π²Ρ‹Π»Π΅Ρ‚Ρ‹ клиСнтского прилоТСния.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок синтаксиса ΠΈΠ»ΠΈ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Ρ… ссылок, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ ядро ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ 8.3 ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ комплСксного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Π˜Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΊΡ€ΠΎΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ΅ сСрвСра ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ограничСниях. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΈΡ… Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнных инструмСнтов 1Π‘ ΠΈ SQL Server, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ появлСниС.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ скрытым Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² стандартном ΠΆΡƒΡ€Π½Π°Π»Π΅ рСгистрации, Π½ΠΎ тормозят Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π’Π°ΠΊΠΈΠ΅ случаи Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°ΠΌΠΏΠΎΠ² памяти ΠΈΠ»ΠΈ использования спСциализированных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ Π²Ρ€ΠΎΠ΄Π΅ SQL Server Profiler.

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ "ошибка ΠΏΠΎΡ‚ΠΎΠΊΠ°" Π² 1Π‘ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° проявляСтся

Π’ контСкстС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "ΠΏΠΎΡ‚ΠΎΠΊ" относится Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ многопоточности Π² классичСском ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ (ΠΊΠ°ΠΊ Π² языках программирования), Π½ΠΎ ΠΈ ΠΊ логичСским процСссам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° управляСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ:

  • πŸ”„ Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ остатков).
  • πŸ”’ Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ β€” Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ "Π·Π°ΠΌΠΎΡ‡ΠΊΠΈ" Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, справочники, рСгистры), ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.
  • ⚑ Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ β€” Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, рассылки, ΠΎΠ±ΠΌΠ΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ….
  • πŸ–₯️ БСансы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ создаСт свой ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов.

Ошибка ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих процСссов Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. НапримСр:

  • 🚫 Ошибка Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ оТидания истСк β€” ΠΏΠΎΡ‚ΠΎΠΊ слишком Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π΅Ρ‚ освобоТдСния рСсурса.
  • ❌ ΠŸΠΎΡ‚ΠΎΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ (ThreadClosed) β€” Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ·-Π·Π° сбоя ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • ⚠️ Вранзакция Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° ΠΈΠ·-Π·Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ β€” классичСский "Π΄Π΅Π΄Π»ΠΎΠΊ" (взаимная Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°).

Π‘Π°ΠΌΡ‹Π΅ опасныС ошибки β€” Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ явным сообщСниСм, Π° ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ "подвисаниС" систСмы. НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ "ΠŸΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚", Π° систСма ΠΌΠΎΠ»Ρ‡Π° висит ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠΈ, хотя Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ рСгистрации Π½Π΅Ρ‚ записСй ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ скрытой Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘Π£Π‘Π”.

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΎΠΉ ошибкой ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ Ρ‡Π°Ρ‰Π΅?
Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ
НСоТиданноС Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°
ЗависаниС Π±Π΅Π· сообщСний
Π”Ρ€ΡƒΠ³ΠΎΠ΅

2. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ошибок ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² 1Π‘

Π‘ΠΎΠ»Π΅Π΅ 80% ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π² 1Π‘ связаны с трСмя катСгориями ΠΏΡ€ΠΈΡ‡ΠΈΠ½: Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Π‘Π£Π‘Π” ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ограничСниями. Рассмотрим ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

2.1. Ошибки Π² ΠΊΠΎΠ΄Π΅ 1Π‘ (самыС распространСнныС)

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

  • πŸ”„ Π”Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() ΠΈ Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ тяТСлыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ…ΠΎΠ΄ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… справочников).
  • πŸ”’ Π―Π²Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±Π΅Π· освобоТдСния β€” использованиС Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() Π±Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().
  • πŸ“Š МассовоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ†ΠΈΠΊΠ»Π΅ β€” вмСсто ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· запрос) Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ построчно.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ опасного ΠΊΠΎΠ΄Π°:

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ‡Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ Π¦ΠΈΠΊΠ»

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ(); // Π—Π°ΠΏΠΈΡΡŒ Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ!

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° всС врСмя выполнСния Ρ†ΠΈΠΊΠ»Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ большом количСствС строк ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

2.2. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘Π£Π‘Π”

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Microsoft SQL Server ΠΈΠ»ΠΈ PostgreSQL, ошибки ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с:

  • πŸ›‘ НСхваткой рСсурсов β€” нСдостаточный Ρ€Π°Π·ΠΌΠ΅Ρ€ tempdb, ΠΌΠ°Π»ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти для Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ»Π°.
  • βš™οΈ ΠΠ΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ настройками β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слишком Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ MAX DOP (максимальная ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°).
  • πŸ”„ Π”Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ SQL β€” ΠΊΠΎΠ³Π΄Π° 1Π‘ отправляСт нСэффСктивныС запросы, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ запрос sp_who2 Π² SQL Server Management Studio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ ΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ "Π²ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ°" зависания.

2.3. АппаратныС ΠΈ сСтСвыС ограничСния

Π”Π°ΠΆΠ΅ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнная Π‘Π£Π‘Π” ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Π²Π°Ρ‚ΡŒ сбои ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΠ·-Π·Π°:

  • πŸ–₯️ ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ сСрвСра β€” высокий CPU Load ΠΈΠ»ΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ° памяти (Page Life Expectancy Π½ΠΈΠΆΠ΅ 300 сСкунд).
  • 🌐 ΠΠ΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ сСти β€” ΠΎΠ±Ρ€Ρ‹Π²Ρ‹ соСдинСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром 1Π‘ ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСром 1Π‘ ΠΈ Π‘Π£Π‘Π”.
  • πŸ’Ύ ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… дисков β€” Ссли tempdb ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… располоТСны Π½Π° HDD вмСсто SSD.

НапримСр, ΠΏΡ€ΠΈ использовании 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1Π‘:Fresh) ошибки ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΈΠ·-Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΏΠΎ CPU ΠΈΠ»ΠΈ дисковому Π²Π²ΠΎΠ΄Ρƒ-Π²Ρ‹Π²ΠΎΠ΄Ρƒ.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° SQL Server?

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ SQL Server Management Studio, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ сСрвСру ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ запрос:

SELECT

SQLProcessUtilization AS [SQL Server Process CPU Utilization],

SystemIdle AS [System Idle Process],

100 - SystemIdle - SQLProcessUtilization AS [Other Process CPU Utilization]

FROM (

SELECT

record.value('ProcessUtilization[1]', 'int') AS SQLProcessUtilization,

record.value('SystemIdle[1]', 'int') AS SystemIdle

FROM (

SELECT [timestamp], CONVERT(xml, record) AS [record]

FROM sys.dm_os_ring_buffers

WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'

AND record LIKE '%<ProcessUtilization>%'

) AS x

) AS y;

Π­Ρ‚ΠΎΡ‚ запрос ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ CPU процСссами SQL Server ΠΈ систСмы Π² Ρ†Π΅Π»ΠΎΠΌ.

3. Диагностика ошибок ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²: инструмСнты ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°, сначала Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Для этого Π² 1Π‘ ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… систСмах Π΅ΡΡ‚ΡŒ нСсколько инструмСнтов.

3.1. Π–ΡƒΡ€Π½Π°Π» рСгистрации 1Π‘

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ мСсто для поиска β€” стандартный ΠΆΡƒΡ€Π½Π°Π» рСгистрации (АдминистрированиС β†’ Π–ΡƒΡ€Π½Π°Π» рСгистрации). Π˜Ρ‰ΠΈΡ‚Π΅ записи с:

  • πŸ”΄ Ошибка Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Lock timeout
  • ⚠️ ΠŸΠΎΡ‚ΠΎΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ (ThreadClosed)
  • ⏳ Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ оТидания (Timeout expired)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:

  • πŸ•’ ВрСмя возникновСния β€” ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΠΈ ошибка с ΠΏΠΈΠΊΠΎΠ²Ρ‹ΠΌΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ?
  • πŸ‘€ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ β€” maybe ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сотрудника?
  • πŸ“„ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠ΅Ρ‚ΠΊΠΈ β€” ΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ справочник участвуСт Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅?

3.2. ВСхнологичСский ΠΆΡƒΡ€Π½Π°Π» (самый ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт)

Если ошибка Π½Π΅ Π²ΠΈΠ΄Π½Π° Π² стандартном ΠΆΡƒΡ€Π½Π°Π»Π΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ тСхнологичСский ΠΆΡƒΡ€Π½Π°Π» (1CV8Log). Для этого:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСрвСра 1Π‘ (conf.cfg ΠΈΠ»ΠΈ srvinfo.reg).
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:
    [Common]
    

    LogDir=ΠΏΡƒΡ‚ΡŒ_ΠΊ_ΠΏΠ°ΠΏΠΊΠ΅_с_Π»ΠΎΠ³Π°ΠΌΠΈ

    LogFile=1CV8Log

    LogLevel=Debug

  3. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ сСрвСр 1Π‘.

Π’ Π»ΠΎΠ³Π°Ρ… ΠΈΡ‰ΠΈΡ‚Π΅ строки с:

  • πŸ” LOCK: β€” информация ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ….
  • ⚑ THREAD: β€” события, связанныС с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.
  • ❌ EXCEPTION: β€” Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Π˜ΡΠΊΠ°Ρ‚ΡŒ строки с LOCK: ΠΈ THREAD:|ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ Π΄ΠΎ ΠΈ послС сбоя|Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ID ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (thread ID) Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ… записях|ΠΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стСктрСйсы ошибок (CALLSTACK:)

-->

3.3. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π‘Π£Π‘Π”

Для Microsoft SQL Server ΠΏΠΎΠ»Π΅Π·Π½Ρ‹:

  • πŸ› οΈ SQL Server Profiler β€” отслСТиваСт всС запросы ΠΎΡ‚ 1Π‘ ΠΊ Π±Π°Π·Π΅.
  • πŸ“Š Dynamic Management Views (DMV) β€” систСмныС прСдставлСния для Π°Π½Π°Π»ΠΈΠ·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ:
    SELECT
    

    t1.resource_type,

    t1.resource_database_id,

    t1.request_mode,

    t1.request_session_id,

    t2.blocking_session_id

    FROM

    sys.dm_tran_locks AS t1

    INNER JOIN

    sys.dm_os_waiting_tasks AS t2

    ON t1.lock_owner_address = t2.resource_address;

Для PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸ” pg_locks β€” ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.
  • πŸ“ˆ pg_stat_activity β€” Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ соСдинСния ΠΈ запросы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запроса для PostgreSQL:

SELECT

blocked_locks.pid AS blocked_pid,

blocking_locks.pid AS blocking_pid,

blocked_activity.usename AS blocked_user,

blocking_activity.usename AS blocking_user,

blocked_activity.query AS blocked_statement

FROM

pg_catalog.pg_locks blocked_locks

JOIN

pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid

JOIN

pg_catalog.pg_locks blocking_locks

ON blocking_locks.locktype = blocked_locks.locktype

AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE

AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation

AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page

AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple

AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid

AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid

AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid

AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid

AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid

AND blocking_locks.pid != blocked_locks.pid

JOIN

pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid

WHERE

NOT blocked_locks.GRANTED;

3.4. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸ–₯️ ДиспСтчСр Π·Π°Π΄Π°Ρ‡ Windows β€” слСдитС Π·Π° Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π½Π° CPU, ΠΏΠ°ΠΌΡΡ‚ΡŒ, диск.
  • πŸ“‰ PerfMon (Performance Monitor) β€” настройтС сборщики для SQL Server:
    • πŸ”„ SQLServer:Locks|Average Wait Time (ms) β€” срСднСС врСмя оТидания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.
    • πŸ”’ SQLServer:Locks|Lock Waits/sec β€” количСство ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π² сСкунду.
  • 🌐 1Π‘:АдминистрированиС сСрвСра β€” встроСнныС Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
πŸ’‘

Если Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ 1Π‘ Π½Π΅Ρ‚ явных ошибок, Π½ΠΎ систСма Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ скрытыС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘Π£Π‘Π”. Часто ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π² Π΄ΠΎΠ»Π³ΠΈΡ… транзакциях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π² интСрфСйсС 1Π‘, Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

4. Пошаговая инструкция: ΠΊΠ°ΠΊ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°

Когда ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ошибки ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Π΅Ρ‘ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ. НиТС β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв.

4.1. Π¨Π°Π³ 1: Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ "зависшиС" ΠΏΠΎΡ‚ΠΎΠΊΠΈ

Если ошибка связана с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ, сначала ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Для 1Π‘ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚):

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ АдминистрированиС β†’ АктивныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ.
  2. НайдитС сСансы с статусом ВыполняСтся ΠΈΠ»ΠΈ ОТиданиС.
  3. НаТмитС ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ для ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСансов.

Для SQL Server:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ запрос для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ процСсса:

-- НайдитС ID Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ процСсса

SELECT

session_id,

command,

blocking_session_id,

wait_type,

wait_time,

wait_resource

FROM

sys.dm_exec_requests

WHERE

blocking_session_id <> 0;

-- Π£Π±Π΅ΠΉΡ‚Π΅ процСсс (Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ {ID} Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€)

KILL {ID};

Для PostgreSQL:

-- НайдитС Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ процСссы

SELECT

pid,

usename,

query,

query_start

FROM

pg_stat_activity

WHERE

pid IN (

SELECT blocking_pid FROM pg_blocking_pids()

);

-- Π£Π±Π΅ΠΉΡ‚Π΅ процСсс

SELECT pg_terminate_backend({PID});

πŸ’‘

ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ сСанса ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ выполняСт Π»ΠΈ ΠΎΠ½ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

4.2. Π¨Π°Π³ 2: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄

Если ошибка Π²Ρ‹Π·Π²Π°Π½Π° нСэффСктивным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 1: ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ врСмя Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

🚫 ΠŸΠ»ΠΎΡ…ΠΎ:

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

// Π”ΠΎΠ»Π³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ...

Запрос = Новый Запрос;

Запрос.ВСкст = "ВЫБРАВЬ * Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Пока Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки...

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

βœ… Π₯ΠΎΡ€ΠΎΡˆΠΎ:

// Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅

Запрос = Новый Запрос;

Запрос.ВСкст = "ВЫБРАВЬ * Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… = Новый Массив;

Пока Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅Π”Π°Π½Π½Ρ‹Π΅);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ быстро Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Для КаТдого Π”Π°Π½Π½Ρ‹Π΅ Из ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… Π¦ΠΈΠΊΠ»

// Быстрая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°...

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 2: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

🚫 ΠŸΠ»ΠΎΡ…ΠΎ (построчная запись):

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°.Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚();

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ(); // Π—Π°ΠΏΠΈΡΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ!

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

βœ… Π₯ΠΎΡ€ΠΎΡˆΠΎ (пакСтная запись):

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π—Π°ΠΏΠΈΡΠΈ = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°.Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠΠ°Π±ΠΎΡ€Π—Π°ΠΏΠΈΡΠΈ();

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

НовыйДокумСнт = ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π—Π°ΠΏΠΈΡΠΈ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

// ЗаполняСм Π΄Π°Π½Π½Ρ‹Π΅...

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π—Π°ΠΏΠΈΡΠΈ.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ(); // Одна запись для всСх!

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 3: Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ явных Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ

🚫 ΠŸΠ»ΠΎΡ…ΠΎ:

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ();

// Π”ΠΎΠ»Π³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ...

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ();

βœ… Π₯ΠΎΡ€ΠΎΡˆΠΎ:

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ вмСсто явной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ(); // АвтоматичСская Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° врСмя записи

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

4.3. Π¨Π°Π³ 3: ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π‘Π£Π‘Π”

Для SQL Server ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ОписаниС
MAX DOP 2–4 (для 4–8 ядСр) Максимальная ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. Блишком высокоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ.
Cost Threshold for Parallelism 25–50 ΠŸΠΎΡ€ΠΎΠ³ стоимости запроса, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Lock Timeout (ms) 10000–30000 ВрСмя оТидания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² миллисСкундах. Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅, Ссли часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹.
tempdb Ρ€Π°Π·ΠΌΠ΅Ρ€ 20–30% ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π°Π·Ρ‹ 1Π‘ НСдостаточный Ρ€Π°Π·ΠΌΠ΅Ρ€ tempdb ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам ΠΏΡ€ΠΈ сортировкС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

Для PostgreSQL ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:

  • max_connections β€” ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅, Ссли ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • work_mem β€” ΠΏΠ°ΠΌΡΡ‚ΡŒ для сортировки (установитС 16–64 ΠœΠ‘).
  • deadlock_timeout β€” Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ обнаруТСния Π΄Π΅Π΄Π»ΠΎΠΊΠ° (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1000 мс).

4.4. Π¨Π°Π³ 4: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ

Если ошибки ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² связаны с Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΎΠΉ рСсурсов:

  • πŸ–₯️ CPU: Для сСрвСра 1Π‘ с 50+ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ рСкомСндуСтся Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 8 ядСр (Π»ΡƒΡ‡ΡˆΠ΅ 16+).
  • 🧠 ΠžΠ—Π£: Минимально β€” 16 Π“Π‘ для сСрвСра 1Π‘ + 32 Π“Π‘ для SQL Server (Π½Π° 100 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ).
  • πŸ’Ύ Диски: tempdb ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π° SSD (Π»ΡƒΡ‡ΡˆΠ΅ NVMe).
  • 🌐 Π‘Π΅Ρ‚ΡŒ: ΠœΠ΅ΠΆΠ΄Ρƒ сСрвСром 1Π‘ ΠΈ Π‘Π£Π‘Π” Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ гигабитная связь с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ < 1 мс.

Для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² 1Π‘:Fresh ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΠΊΠ΅):

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π»ΠΈ рСсурсы ΠΏΠΎ соглашСнию (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΈΠΌΠΈΡ‚ CPU ΠΈΠ»ΠΈ IOPS).
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ диски для tempdb ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π°Π·Ρ‹.
πŸ’‘

Если ошибки ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² ΠΏΠΈΠΊΠΎΠ²Ρ‹Π΅ часы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ мСсяца), ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° скорСС всСго Π² Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ΅ рСсурсов. РассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ сСрвСра ΠΈΠ»ΠΈ пСрСноса Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π½Π° Π½ΠΎΡ‡Π½ΠΎΠ΅ врСмя.

5. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии ошибок ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ случаи, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ администраторы 1Π‘.

5.1. Ошибка "Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ оТидания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ"

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сообщСниС Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ оТидания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ истСк ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ справочник.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»Π³ΠΎ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.
  • Π’ ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ длинная транзакция, которая Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  • Блишком Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Lock Timeout Π² SQL Server.

РСшСниС:

  1. НайдитС Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ процСсс (см. Ρ€Π°Π·Π΄Π΅Π» 4.1).
  2. Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ Lock Timeout Π² настройках SQL Server Π΄ΠΎ 30000 мс.
  3. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ (см. Ρ€Π°Π·Π΄Π΅Π» 4.2).

5.2. Ошибка "ΠŸΠΎΡ‚ΠΎΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚" (ThreadClosed)

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: Π’Π½Π΅Π·Π°ΠΏΠ½ΠΎΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ клиСнтского прилоТСния с ошибкой ΠŸΠΎΡ‚ΠΎΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΈΠ»ΠΈ Thread has been closed.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • ΠžΠ±Ρ€Ρ‹Π² соСдинСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром 1Π‘.
  • НСобработанноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅.
  • ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ процСсса антивирусом ΠΈΠ»ΠΈ Ρ„Π°Π΅Ρ€Π²ΠΎΠ»ΠΎΠΌ.

РСшСниС:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСти ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром.
  2. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ сСтСвых Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ².
  3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для процСссов 1cv8.exe, ragent.exe, rmngr.exe Π² антивирусС.
  4. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ тСхнологичСский ΠΆΡƒΡ€Π½Π°Π» ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ стСктрСйс ошибки.

5.3. ЗависаниС систСмы Π±Π΅Π· ошибок

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: 1Π‘ "подвисаСт" Π½Π° нСсколько ΠΌΠΈΠ½ΡƒΡ‚, Π½ΠΎ Π² ΠΆΡƒΡ€Π½Π°Π»Π°Ρ… Π½Π΅Ρ‚ явных ошибок. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ видят "пСсочныС часы" ΠΈΠ»ΠΈ пустоС ΠΎΠΊΠ½ΠΎ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • Π‘ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ SQL Server.
  • Π”ΠΎΠ»Π³ΠΈΠ΅ запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ.
  • НСхватка рСсурсов (CPU ΠΈΠ»ΠΈ дисковоС I/O).

РСшСниС:

  1. ЗапуститС SQL Server Profiler ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π΄ΠΎΠ»Π³ΠΈΠ΅ запросы (дольшС 10 сСкунд).
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° диск (счСтчики Avg. Disk sec/Read ΠΈ Avg. Disk sec/Write Π² PerfMon).
  3. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ индСксы Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

5.4. Ошибки ΠΏΡ€ΠΈ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… заданиях

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ расчСт Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹) Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ с ошибкой ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ»ΠΈ висят бСсконСчно.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΌ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ сСансами.
  • НСхватка памяти для выполнСния тяТСлых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
  • Ошибки Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° задания.

РСшСниС:

  1. ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠΈΡ‚Π΅ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания Π½Π° Π½ΠΎΡ‡Π½ΠΎΠ΅ врСмя.
  2. Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ тяТСлыС задания Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ части.
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² настройках задания (Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).

5.5. Π”Π΅Π΄Π»ΠΎΠΊΠΈ (Π²Π·Π°ΠΈΠΌΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ)

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: Π’ ΠΆΡƒΡ€Π½Π°Π»Π°Ρ… SQL Server ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ записи ΠΎ Π΄Π΅Π΄Π»ΠΎΠΊΠ°Ρ… (deadlock), Π° Π² 1Π‘ β€” ошибки Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • Π”Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ рСсурсы Π² Ρ€Π°Π·Π½ΠΎΠΌ порядкС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠŸΠΎΡ‚ΠΎΠΊ 1 Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ А, Π·Π°Ρ‚Π΅ΠΌ Π‘; ΠŸΠΎΡ‚ΠΎΠΊ 2 Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π‘, Π·Π°Ρ‚Π΅ΠΌ А).
  • Блишком агрСссивныС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ 1Π‘.

РСшСниС:

  1. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ трассировку Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ² Π² SQL Server:
    -- Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ трассировки Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ²
    

    DBCC TRACEON (1204, 1222, -1);

  2. ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ графичСскиС ΠΏΠ»Π°Π½Ρ‹ Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ² (ΠΎΠ½ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² систСмных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…).
  3. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ порядок Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ рСсурсов Π² ΠΊΠΎΠ΄Π΅ (всСгда Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС).

ГрафичСский ΠΏΠ»Π°Π½ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° (процСсса), ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Π΄Π΅Π΄Π»ΠΎΠΊΠ΅, ΠΈ рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚. Π‘Ρ‚Ρ€Π΅Π»ΠΊΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ оТидания. НапримСр:

- ΠŸΡ€ΠΎΡ†Π΅ΡΡ 1 ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ A ΠΈ ΠΆΠ΄Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ B.

- ΠŸΡ€ΠΎΡ†Π΅ΡΡ 2 ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ B ΠΈ ΠΆΠ΄Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ A.

РСшСниС β€” ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π° процСсса Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌ порядкС (сначала A, ΠΏΠΎΡ‚ΠΎΠΌ