我在使用 Linux 系统时遇到问题,我发现sysstat并sar报告了磁盘 I/O、平均服务时间以及平均等待时间的巨大峰值。
下次发生这些峰值时,我如何确定哪个过程导致了这些峰值?
有可能sar吗?我可以从已经录制的sar文件中找到这些信息吗?
的输出sar -d,系统停顿发生在下午 12.58-13.01 左右。
12:40:01 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:40:01 dev8-0 11.57 0.11 710.08 61.36 0.01 0.97 0.37 0.43
12:45:01 dev8-0 13.36 0.00 972.93 72.82 0.01 1.00 0.32 0.43
12:50:01 dev8-0 13.55 0.03 616.56 45.49 0.01 0.70 0.35 0.47
12:55:01 dev8-0 13.99 0.08 917.00 65.55 0.01 0.86 0.37 0.52
13:01:02 dev8-0 6.28 0.00 400.53 63.81 0.89 141.87 141.12 88.59 …Run Code Online (Sandbox Code Playgroud) 我有时会在 auth.log 中找到以下消息:
sshd[8888]: error: no more sessions
Run Code Online (Sandbox Code Playgroud)
在 sshd_config 中,我设置了“MaxStartups 300”,并且我不应该同时连接那么多客户端。在繁忙的时候,我想我可以有大约 50-60 个并发连接,这些连接只持续几秒钟,同时通过 sftp 上传/下载一个小文件。
我怀疑可能有些客户端没有按照他们应该的方式关闭连接,并且由于连接重复发生并且非常频繁(每个客户端每分钟连接几次),它可能会随着时间的推移而增加。为了解决这个问题,我希望能够计算 SSH 会话数,但我想不出比使用 netstat 计算连接数更好的方法:
netstat -an | grep 123.456.789.abc:22 | wc -l
Run Code Online (Sandbox Code Playgroud)
因为这将计算连接数而不是会话数,我不确定是否存在会话存在但连接已关闭的情况?
有没有更好的方法来计算当前的连接,甚至更好地打印所有会话的当前状态?
提前致谢!
背景:由于与 raid 控制器的不兼容问题,我被迫将服务器从 Ubuntu 8.04 LTS 远程升级到 10.04 LTS。
与服务器的互联网连接有些稳定,很少掉线。尽管我担心在升级时会丢失 SSH 连接,从而使服务器处于无法访问的状态。我也担心升级后服务器无法启动,以防我无法知道是什么问题。
行动计划:我正在寻找的是将丢失服务器的风险降至最低的建议,我知道我所做的事情风险很大。这是我目前的行动计划:
1) 备份所有重要的本地和外部内容。
2) 使用 fsck 暂时禁用启动时磁盘检查。(如果磁盘检查需要很长时间才能完成,我将不知道发生了什么)。这将通过 fstab 通过将最后一个参数从 1 更改为 0 来完成:
UUID=5b1ff964-7608-44fd-a38d-7e43ad6b4c11 / ext3 relatime,errors=remount-ro 0 0
Run Code Online (Sandbox Code Playgroud)
3) 使用屏幕启动所有升级过程,以便在我失去连接时可以恢复它们。IE:
sudo screen apt-get upgrade
Run Code Online (Sandbox Code Playgroud)
问题:
更新:几乎所有的回答都建议我设置 DRAC/IPMI,我现在已经完成了。这感觉是一项非常了不起的成就,肯定会使风险小得多,因为我可以通过 KVM/控制台重定向跟踪整个电源循环。为了将来的参考,这就是我所做的:
1) 安装 ipmitool 来为 IPMI v2.0 设置 IP 地址、网关等:
sudo ipmitool lan set 1 ipaddr 192.168.1.99
sudo ipmitool lan set 1 defgw ipaddr 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
2)安装free-ipmi,将网卡选择模式改为shared(我只有一个网口连接网络):
sudo ipmi-oem dell set-nic-selection shared …Run Code Online (Sandbox Code Playgroud)