TCP 端口重复

TCP 端口重复

我需要将 server1 与 server2 通信。
当我们执行 program.exe 时,server1 应该从 server2 获取一些记录,这将使 server1 获取 server2

当我给出 netstat -an | find “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 MB 的 RAM 并且处于挂起状态,它将向 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 连接没有任何关系(至少不是直接的),它们只是一种转移注意力的花招。

相关内容