我在 Solaris 系统上运行。我编写了一个 Korn shell 脚本,每 30 秒运行此行:netstat -a | grep TIME-WAIT | wc -l
一年来,它一直运行良好。现在我搬到了一个新实验室,当我运行它时,TIME-WAIT 中的连接数从 80 个增加到 32000 个。
大多数这些连接都是与在本地网络上的不同机器上运行的 ldap 服务器进行的。
有人见过这种现象吗?你是怎么解决的?
谢谢。
答案1
nscd 正在运行吗?我猜以前是运行的,现在不运行了。nscd 用于缓存某些类型的目录数据(特别是组和密码)。如果它没有运行,那么每当您执行需要访问目录服务器的查找时,它们(可能)必须建立与 ldap 主机的连接,而不是先查询缓存。
由于您没有说明 solaris 的版本,我假设它是 10。您可以通过执行以下操作来检查 nscd 是否正在运行:
svcs -l 名称服务缓存
并查看它是否处于在线状态。如果不是,您可以尝试使用以下命令重新启动它:
svcadm 刷新名称服务缓存
如果仍然失败,您应该检查它的日志文件,您可以在上面的 svcs 命令的输出中找到它。
答案2
TIME-WAIT 状态通常是由应用程序中的套接字关闭逻辑损坏引起的。您需要识别两端的进程,检查每个进程以了解其正在做什么,并检查另一台服务器。
尝试确定单个 TIME-WAIT 连接是否保持很长时间,或者是否有大量连接在短时间内创建然后被丢弃。