如何获取Linux网络日志?

如何获取Linux网络日志?

我们在 Linux 上的特定端口上运行了一个 Java 服务器,该服务器接受成千上万用户的持久连接。最近我们的客户端无法连接,并出现超时错误。我们怀疑流量过高,但我们的 Java 日志实际上显示每秒连接的数量并不多。

我们怀疑是不是因为有太多人同时尝试连接,而这些连接基本上在操作系统级别被丢弃,因此 Java 程序从来没有机会接受连接?Linux 中是否有某种日志可以显示有人试图连接套接字?

答案1

iptables -I INPUT -p tcp --dport some_port -j LOG然后
tail -f /var/log/messages
,查看该规则命中了多少数据: iptables -L -n -v
或者您可以运行 tcpdump 并 grep 出端口。

答案2

当我遇到非常严重的网络问题时,我倾向于启动wireshark。对我来说,当我必须深入了解细节时,没有比它更好的网络诊断工具了。如果您无法在源或目标框上安装它,也不用担心;您可以运行tcpdump -w以在开始和/或终点处将数据包数据写入文件,并在您方便时将文件提供给另一个框上的 wireshark。

答案3

顺便说一句,您可能还想删除它:

iptables -L INPUT --line-numbers
iptables -D INPUT <line num>

答案4

最好能准确地看到 Java 线程在套接字级别上得到了什么。同时,您可能希望将其与 OS 网络信息关联起来。看看 AppFirst。他们可以做这种事情。

相关内容