14 我们有一个运行在Linux上的Java服务器的特定端口,该端口接受成千上万个用户的持久连接。最近,我们的客户无法连接并出现超时错误。我们怀疑流量太高了,但是我们的Java日志实际上显示每秒连接的数量并不多。 我们怀疑是否可能有太多同时尝试,并且它们基本上已在操作系统级别删除,因此Java程序从未真正有机会接受连接吗?linux中是否有某种日志可以显示有人试图敲打套接字? linux networking logging java socket — rot source
8 iptables -I INPUT -p tcp --dport some_port -j LOG然后, tail -f /var/log/messages 然后查看该规则已击中多少数据: iptables -L -n -v 或者,您可以运行tcpdump并grep输出端口。 — 詹姆斯·L source 2 +1。稍作修改可能会更好地捕获新的连接尝试:iptables -I INPUT -p tcp --dport some_port -m state --state NEW。请注意,除非您对每次连接尝试的细节都感兴趣,否则省略-j LOG可避免向系统日志文件发送大量不需要的数据。 — 史蒂文
3 当我遇到真正令人讨厌的网络问题时,我倾向于启动wireshark。对我来说,当我不得不深入了解细节时,没有更好的网络诊断工具。而且也不必担心无法将其安装在源或目标盒中;您可以方便tcpdump -w地将数据包数据写入起始和/或端点上的文件,并将文件馈送到另一个盒子上的Wireshark。 — 疯了 source 是的,我建议像这样放置一个过滤器tcpdump -nS dst port <some port> — gravyface
0 watch -n1 -d "netstat -an | grep ESTABLISHED | wc -l" 显示当前建立的连接。 将此与您的活动ulimit设置进行比较,当然还要与您的Java应用程序可以处理的最大连接数进行比较。 — 贾斯 source
iptables -I INPUT -p tcp --dport some_port -m state --state NEW
。请注意,除非您对每次连接尝试的细节都感兴趣,否则省略-j LOG
可避免向系统日志文件发送大量不需要的数据。