|
0
KrabCore
04.09.15
✎
16:27
|
Сильно не пинать, только учусь.
Что имеем: х64 сервер 1с, постгрискл от 1с (платформа и версия постгри последняя на сегодняшний день)
На сервере крутятся 2 базы: БП 2 и ЗУП 2.5 Корп. Обе базы типовые, без доработок.
По БП нареканий нет, работает нормально.
С ЗУПом же ситуация печальная - периодически (в основном при проведении документов или расчетах) вылетают конфликты блокировок.
разбирательство привело к тому что в данной базе создаются "пустые" сеансы, которые собственно блокируют базы.
Из скриншота видно что к базе есть лишь 4 реальных подключения, и 7 пустых(зависших) подключений которые висят по несколько часов.
Подскажите в чем может быть проблема, и в какую сторону копать?
|
|
|
4
cons74
04.09.15
✎
18:22
|
Откуда сенасы не скажу. Как решить - перезапускать рабочие процессы: сперва ставишь ему использование=нет. Потом когда память с него "уйдет" - можно "удалить".
Ну или в свойствах кластера перезапуск часто.
Думаю, что многих мистян отпугнуло postgre в заголовке-хотя ни мой взгляд он тут не при чем. Да и пятница вечер...
|
|
|
5
rustemg
04.09.15
✎
18:30
|
Повесь на шедулер на Winodws машине выполнение этого скрипта vbs:
'имя пользователя 1С:Предприятия
UserName = "Киилер"
'пароль пользователя 1С:Предприятия
UserPass = "123321"
'имя сервера 1С
ServerName = "server1c"
BaseName = "base1c"
Dim objFSO
Dim objFile
Dim LogFileName
Dim Result
'Sub CloseConnection()
Dim Connector, Agent, Cluster, WorkProcess, WorkProcessConnection, Base, Connections, i, CurrentConnection
Dim BaseList
Set Connector = CreateObject("V83.COMConnector")
'Селект текущего кластера серверов
Set Agent = Connector.ConnectAgent(ServerName)
Set Cluster = Agent.GetClusters()(0)
Agent.Authenticate Cluster, "", ""
'Agent.Authenticate Cluster, UserName, UserPass
MassBase = Agent.GetInfoBases(Cluster)
For i = LBound(MassBase) To UBound(MassBase)
Set Base = MassBase(i)
'MsgBox Base.Name
If Base.Name = BaseName Then
Sessions = Agent.GetInfoBaseSessions(Cluster, Base)
For k = LBound(Sessions) To UBound(Sessions)
Set ThisSession = Sessions(k)
If ThisSession.AppID <> "COMConsole" And IsEmpty(ThisSession.process) Then
Agent.TerminateSession Cluster, ThisSession
'MsgBox "User: " & ThisSession.UserName & " App ID: " + ThisSession.AppID
End If
Next
Exit For
End If
Next
'End Sub
'CloseConnection()
|
|