Ubuntu Server 10.04 网络流量过大导致连接断开

Ubuntu Server 10.04 网络流量过大导致连接断开

我目前正在运行无头 Ubuntu 10.04 服务器。已安装 LAMP 堆栈、Joomla、Virtualbox、phpvirtualbox、webmin 和 proFTP。它解析 IP 地址,以便我可以使用 DDClient 远程访问它(apache2 web 服务器或 FTP)。已安装的所有软件包均已使用 apt-get 安装。Webmin(尽管在 Ubuntu Server 中不鼓励使用)主要用于管理 web 服务器方面。当我使用 Ubuntu Server 10.10 时也出现了此问题。

无论是本地还是远程,在网络流量过大一段时间后,连接就会断开。我特别指的是通过 FTP、SCP 或 Samba(我很少使用后者)传输文件。ping 或 ssh 没有响应。我无法通过 FTP 连接到服务器,也无法加载网站。有时服务器已经运行了几天,一切都运行良好,因为我很少访问它(因此网络流量不大)。

我更换了一些硬件,尽管我不认为这是导致问题的原因:在我进行任何更改之前,这种情况就已经发生了。起初,我以为是我的 ISP 提供的路由器由于某种配置错误而阻塞了流量(也许假设这是某种 DoS 攻击)。我更换了路由器,但仍然没有成功。我检查了 syslog、dmesg 和 kern.log 中的警告,但没有发现任何警告。我在启动时通过 GRUB2 菜单运行了 memtest,有一次出现了 4 个错误。我再次在各个插槽中分别使用 RAM 运行,一切正常。我查看了 BIOS 设置,一切看起来都很好。我尝试拔掉不必要的硬件(其他内置硬盘驱动器、CD 驱动器、软盘、PCI 卡等)。

任何关于如何开始排除故障的帮助或提示都将不胜感激。请注意,我只是把玩服务器当作一种爱好,所以我的知识还不是最精湛的。我对命令行很熟悉,并且有主动性,知道如何查找我无法做的事情。不幸的是,我似乎找不到任何这样的问题。

此外:如果找不到解决方案,请帮忙编写一个脚本,如果在 x 分钟后,服务器没有收到对 Google 等地方的 ping 响应,则该脚本将导致服务器自动重新启动。诚然,如果我的互联网最终瘫痪,这不是最干净的解决方案,但我想不出还能做什么。

答案1

如果服务器完全 100% 挂起,那么自动重启脚本可能无济于事:除非在挂起之前进行重启,否则您将陷入困境,因为挂起可能会影响旨在调用重启脚本的任何进程。

通过定期重启cron 可能如果它设置得足够有规律,可以在任何挂起之前触发,那么它就会有所帮助,但这只是治标不治本。您可以从另一台机器触发重新启动(如果它检测到服务器停止响应),但这可能需要以电源/控制器的形式购买硬件,可以从一台机器切换以强制另一台机器进行电源循环。

我建议安装某种监控工具,并检查在挂起发生之前(即在停止接受新连接之前)发生了什么。我使用 collectd(使用自定义 CGI 脚本绘制记录的结果图)进行常规监控,尽管还有其他几种常用选项。使用默认设置(监控 CPU 使用率、内存使用率、磁盘 I/O、温度读数等)运行此类监控工具将帮助您发现明显的事情,例如 CPU 活动突然爆发(这可能意味着脚本不好或 DoS 情况)或内存/交换使用缓慢增加(这可能意味着某处有内存泄漏,或者在 Apache 和类似服务的情况下,工人分配配置不适合机器大小)、温度突然升高(这可能意味着循环问题、通风不良或其他外部环境条件是问题的一部分)等等。如果发现这样的一般问题,您可以添加更详细的监控以找出更具体的原因。

另外,如果尚未安装并配置 smartd,请安装并配置。如果问题出在正在出现(或已经出现)严重问题的驱动器上,这可能有助于追踪问题。

无论如何,在系统挂起后,请检查 /var/log 中的常见可疑项 - 您可能会发现在机器停止响应之前,在 /var/log/messages 和 /var/log/syslog(或类似位置)等位置记录了一些线索。如果远程连接开始失败时机器本身没有任何停止,则可能是网卡坏了,挂起了(但机器的其余部分正常),并且一直处于挂起状态,直到机器重新启动或电源循环。

更具体地说:您的 RAM 测试在一两次情况下显示一些错误,则很可能是 RAM 或冷却问题。您可能有一些“略有”问题的 RAM,它们通常可以正常工作并通过测试,但偶尔会翻转位并导致问题,或者您可能有一个对温度敏感的 RAM 问题(在热量达到某个点之前一切都很好),或者它可能是一个更普遍的热量/冷却问题。您的 CPU 或其他核心芯片也可能遇到热量问题,从而导致类似的间歇性影响。

答案2

这可能不是您的原因,但我在 10.04 LTS 中使用 dhcp 时已经看到过这种情况。但是,将接口地址设置为静态地址后,问题就消失了。

我知道这是 10.04 LTS 的问题,因为我至少在 1 台 PC 和 2 台配备 Intel NIC 的服务器上看到过这种情况。我还应该指出,这个问题似乎在最新版本的 Ubuntu 10.04 LTS 服务器中得到了解决。我相信是版本 3 或 4。

https://askubuntu.com/questions/102910/ubuntu-server-10-04-lts-xen-intermittent-networking

现在,请确保您没有使用 DHCP 来分配地址,即使 DHCP 服务器设置为始终提供相同的地址。相反,请在 /etc/network/interfaces 中静态设置它

答案3

RHEL5.x 上的 Apache/PHP 存在类似问题:挂起且无法访问控制台/ssh。日志 /var/log/messages 报告“[...] httpd 调用了 oom-killer [...]”

解决方案是增加更多内存,启用带有 panic_on_oom 的 KDump 并创建更合适的 Apache/PHP 进程限制。此后没有出现任何问题。带有 panic_on_oom 的 KDump 自动重新启动系统,防止挂起。然而,真正的解决办法是限制 Apache/PHP。默认值,尤其是 PHP 的默认值,太宽泛且不安全。有许多用于保护 PHP 的在线资源,所以我不会尝试在这里重新创建一个。

答案4

我认为这可能是由于这些服务严重占用了您的系统资源。另一个可能的解决方案是查看您可以与 Web 服务器建立多少个可能的连接和/或有多少台主机可以使用路由器。

相关内容