Дублирование портов TCP

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

Когда я дал netstat -an | найти "server2" Я мог видеть, что некоторые из портов 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 МБ ОЗУ и зависает, на сервере Server2 будет открыто от 8 до 40 портов.

Я получаю ошибку, что

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.

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

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

1 ответ

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

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


Редактировать: я думал, что я был ясен, но, видимо, нет. Проблема в том, как программа обращается к базе данных, она НИЧЕГО не имеет к TCP-соединениям (по крайней мере, напрямую), они - красная сельдь.

Другие вопросы по тегам