我有一台 Linux Ubuntu 16.04 机器,虽然几乎没有负载,但已经慢了好几天了。它的功能并不弱于它要做的事情:
- 使用 Owncloud 的文件服务器(两个用户),
- 使用 Gogs 的 git 服务器。
硬件:英特尔凌动双核@1.7GHz、4GB DDR3 和 1TB HDD。
我说的慢,是指所有事情都花费了比应有的更多时间。例如,apt-get upgrade
即使没有通常只需几秒钟的大型升级,也需要 5 分钟左右。
当我使用 Gogs 时,页面生成速度也很慢。Gogs 给出的统计数据是:Page: 9803ms Template: 10ms
,通常页面生成时间大约为 500ms……
顶部输出:
top - 10:23:59 up 34 min, 2 users, load average: 0.58, 0.82, 1.00
Tasks: 132 total, 1 running, 131 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 94.9 id, 4.6 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4008036 total, 3014964 free, 366540 used, 626532 buff/cache
KiB Swap: 1000444 total, 1000444 free, 0 used. 3370956 avail Mem
流程:
ps h -Led -o user | sort | uniq -c | sort -n
1 Debian-exim
1 messagebus
2 ntpd
4 syslog
21 www-data
24 gogs
30 mysql
31 sensu
133 root
dmesg:
dmesg | grep "sd\|EXT\|mount\|filesystem\|SATA"
[ 20.069558] ahci 0000:00:18.0: AHCI 0001.0300 32 slots 2 ports 3 Gbps 0x3 impl SATA mode
[ 20.069563] ahci 0000:00:18.0: flags: 64bit ncq led clo pio deso sadm sds apst
[ 20.084065] ata1: SATA max UDMA/133 abar m2048@0x80024000 port 0x80024100 irq 24
[ 20.084068] ata2: SATA max UDMA/133 abar m2048@0x80024000 port 0x80024180 irq 24
[ 20.518945] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 20.518972] ata2: SATA link down (SStatus 0 SControl 300)
[ 20.606811] sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[ 20.606815] sd 0:0:0:0: [sda] 4096-byte physical blocks
[ 20.606972] sd 0:0:0:0: [sda] Write Protect is off
[ 20.606977] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 20.607034] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 20.607508] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 20.649884] sda: sda1 sda2 sda3
[ 20.651578] sd 0:0:0:0: [sda] Attached SCSI disk
[ 22.965497] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[ 27.112100] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 33.547005] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro
[ 36.480793] Adding 1000444k swap on /dev/sda3. Priority:-1 extents:1 across:1000444k FS
[ 37.538548] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[ 948.341404] QNX4 filesystem 0.2.3 registered.
在使用 Owncloud 同步某些内容时使用 iotop 进行调查清楚地表明问题在于 IO 绑定,这主要是由于 MySQL 造成的。
尽管如此,我并不认为 MySQL 是写密集型的,并且将其移动到无日志分区上仅仅为了 jdb2 问题似乎不是一个解决方案;更重要的是,它在几天内一直完美地运行,并且相同的设置在另一台机器上运行良好。
运行完整测试后smartctl -t long /dev/sda
:
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 153 153 033 Pre-fail Always - 1
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 11
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 094 094 000 Old_age Always - 3022
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 4
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 3
193 Load_Cycle_Count 0x0012 100 100 000 Old_age Always - 50
194 Temperature_Celsius 0x0002 206 206 000 Old_age Always - 29 (Min/Max 19/30)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
223 Load_Retry_Count 0x000a 100 100 000 Old_age Always - 0
SMART Error Log Version: 1
No Errors Logged
使用 hdparm 的磁盘性能(从未安装 FS 的 recue 中测试):
hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 2836 MB in 2.00 seconds = 1418.58 MB/sec
Timing buffered disk reads: 236 MB in 3.01 seconds = 78.51 MB/sec
我觉得这太慢了,尽管 SMART 没有显示任何错误,但这可能是硬件问题……
此外,FS 看起来很理智:
e2fsck /dev/sda2
e2fsck 1.42.9 (4-Feb-2014)
/dev/sda2 : clean, 314622/60956672 files, 12081169/243818240 blocks
问题出在硬盘上。hdparm 结果显示,磁盘性能不佳,因此产生大量 IO 等待并拖慢系统速度。
答案1
根据您提供的信息,磁盘问题似乎很有可能。我建议运行 SMART 测试,例如 smartctl -t short /dev/sda 并查看结果。如果结果包含许多坏扇区和错误,那应该是一个提示。
如果您的智能测试在短时间内没有给出任何答案,那么它要么承受了巨大的压力(不太可能是您的报道导致的),要么存在缺陷。持续纠错可能会产生巨大的开销。
我很想知道当所有非必要服务都关闭时,您的磁盘性能如何。请运行 hdparm -Tt /dev/sda 并与我们分享结果。