Дублирование TCP-портов [закрыто]

Мне нужно связать server1 с server2.
Server1 должен получить некоторые записи с Server2 , когда мы запускаем program.exe, заставит server1 получить server2

Когда я дал netstat -an | find "server2" I Видно, что некоторые TCP-порты дублируются

TCP server1:6788    server2:2122    ESTABLISHED
TCP server1:6788    server2:1920    ESTABLISHED
TCP server1:6788    server2:1718    ESTABLISHED
TCP server1:6788    server2:1516    ESTABLISHED
TCP server1:6788    server2:1314    ESTABLISHED
TCP server1:6788    server2:1112    ESTABLISHED
TCP server1:6788    server2:8910    ESTABLISHED
TCP server1:6788    server2:5678    ESTABLISHED
TCP server1:6789    server2:1234    ESTABLISHED

"program.exe" получает до 200 МБ ОЗУ и зависает, для него будет открыто от 8 до 40 портов для Server2.

Я получаю сообщение об ошибке

Transaction (Process ID 65) was deadlocked on lock resources with another process and has 
   been chosen as the deadlock victim. Rerun the transaction.
com.microsoft.sqlserver.jdbc.SQLServerException: Transaction (Process ID 65) was deadlocked 
  on lock resources with another process and has been chosen as the deadlock victim. 
  Rerun the transaction.

В чем должна быть причина?

Это из-за меньшего количества Memmory или дублированных TCP-портов?

-2
задан 8 October 2014 в 16:37
1 ответ

Транзакция (идентификатор процесса 65) была заблокирована на ресурсах блокировки

... Также первые 6 слов сообщения об ошибке. Скорее всего, это состояние гонки race condition в доступе к базе данных Вашей программы, которое приводит к deadlock. Также это может быть черствый замок в базе данных; это трудно определить. Запросы, которые блокируют что-либо, должны быть сгруппированы в транзакции или, по крайней мере, установить таймаут.


Edit: Я думал, что все понятно, но, видимо, нет. Проблема в том, как программа обращается к БД, она НЕ имеет никакого отношения к TCP соединениям (по крайней мере, не напрямую), это красная селедка

.
3
ответ дан 5 December 2019 в 21:12

Теги

Похожие вопросы