Дублирование портов 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-соединениям (по крайней мере, напрямую), они - красная сельдь.