NFS 服务器即使在空闲时也会导致高负载

NFS 服务器即使在空闲时也会导致高负载

我有一个 Ubuntu (12.04) NFS 服务器,即使没有运行任何东西,它的负载也很高(大于 10)。

具体来说,存储由 iSCSI 设备提供,我在该设备上有 5 个逻辑卷 (LVM) 和一些 ext4 分区。即使所有服务都停止,并且没有导出(即没有客户端流量),负载也为 10。运行 iostat 显示始终会写入一个特定的映射设备 (/dev/dm-1)(如果我解释输出)正确):

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda               0.00         0.00         0.00          0          0
sdb             342.00         0.00         9.21          0          9
dm-0              0.00         0.00         0.00          0          0
dm-1            615.00         0.00        11.71          0         11

(sdb 是 iSCSI 设备出现的位置,dm-n 是各个逻辑卷)。我实际上已经停止了(几乎)所有其他正在运行的服务,并且我可以很有信心地说,当我启动 NFS 服务器时,负载就会上升,而当我停止它时,负载就会下降。到底是怎么回事?如何查看正在写入磁盘的内容? (我尝试了 lsof 但没有显示任何进程)。

补充内容按要求添加信息。

正常运行时间说:

18:27:15 up 1 day,  9:59,  2 users,  load average: 14.22, 12.42, 11.55

虚拟机状态说:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  1    960 865924  51604 23204424    0    0    43     4    7   20  0  2 86 12

统计数据说:

Linux 3.2.0-26-generic-pae (leitrim)    12/25/2012  _i686_  (8 CPU)

06:33:53 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
06:33:53 PM  all    0.08    0.04    0.96   11.62    0.00    0.88    0.00    0.00   86.43

dstat -cdD sdb -ng 60 3

----total-cpu-usage---- --dsk/sdb-- -net/total- ---paging--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out 
  0   1  86  12   0   1| 324k 8729k|   0     0 |   1B    8B
  0   1  87  12   0   1|  17k 8953k|8064k 9652k|   0     0 
  0   1  86  12   0   1|1229B 9081k|8010k 9796k|   0    68B
  0   1  89  10   0   1|3209B 8364k|7703k 9014k|   0     0 

rpc信息

  program version netid     address                service    owner
    100000    4    tcp6      ::.0.111               portmapper superuser
    100000    3    tcp6      ::.0.111               portmapper superuser
    100000    4    udp6      ::.0.111               portmapper superuser
    100000    3    udp6      ::.0.111               portmapper superuser
    100000    4    tcp       0.0.0.0.0.111          portmapper superuser
    100000    3    tcp       0.0.0.0.0.111          portmapper superuser
    100000    2    tcp       0.0.0.0.0.111          portmapper superuser
    100000    4    udp       0.0.0.0.0.111          portmapper superuser
    100000    3    udp       0.0.0.0.0.111          portmapper superuser
    100000    2    udp       0.0.0.0.0.111          portmapper superuser
    100000    4    local     /run/rpcbind.sock      portmapper superuser
    100000    3    local     /run/rpcbind.sock      portmapper superuser
    100024    1    udp       0.0.0.0.172.13         status     116
    100024    1    tcp       0.0.0.0.229.210        status     116
    100024    1    udp6      ::.137.98              status     116
    100024    1    tcp6      ::.175.197             status     116
    100021    1    udp       0.0.0.0.171.56         nlockmgr   superuser
    100021    3    udp       0.0.0.0.171.56         nlockmgr   superuser
    100021    4    udp       0.0.0.0.171.56         nlockmgr   superuser
    100021    1    tcp       0.0.0.0.153.54         nlockmgr   superuser
    100021    3    tcp       0.0.0.0.153.54         nlockmgr   superuser
    100021    4    tcp       0.0.0.0.153.54         nlockmgr   superuser
    100021    1    udp6      ::.206.206             nlockmgr   superuser
    100021    3    udp6      ::.206.206             nlockmgr   superuser
    100021    4    udp6      ::.206.206             nlockmgr   superuser
    100021    1    tcp6      ::.132.23              nlockmgr   superuser
    100021    3    tcp6      ::.132.23              nlockmgr   superuser
    100021    4    tcp6      ::.132.23              nlockmgr   superuser
    100003    2    tcp       0.0.0.0.8.1            nfs        superuser
    100003    3    tcp       0.0.0.0.8.1            nfs        superuser
    100227    2    tcp       0.0.0.0.8.1            -          superuser
    100227    3    tcp       0.0.0.0.8.1            -          superuser
    100003    2    udp       0.0.0.0.8.1            nfs        superuser
    100003    3    udp       0.0.0.0.8.1            nfs        superuser
    100227    2    udp       0.0.0.0.8.1            -          superuser
    100227    3    udp       0.0.0.0.8.1            -          superuser
    100003    2    tcp6      ::.8.1                 nfs        superuser
    100003    3    tcp6      ::.8.1                 nfs        superuser
    100227    2    tcp6      ::.8.1                 -          superuser
    100227    3    tcp6      ::.8.1                 -          superuser
    100003    2    udp6      ::.8.1                 nfs        superuser
    100003    3    udp6      ::.8.1                 nfs        superuser
    100227    2    udp6      ::.8.1                 -          superuser
    100227    3    udp6      ::.8.1                 -          superuser
    100005    1    udp       0.0.0.0.154.132        mountd     superuser
    100005    1    tcp       0.0.0.0.217.173        mountd     superuser
    100005    1    udp6      ::.165.76              mountd     superuser
    100005    1    tcp6      ::.141.19              mountd     superuser
    100005    2    udp       0.0.0.0.183.55         mountd     superuser
    100005    2    tcp       0.0.0.0.214.84         mountd     superuser
    100005    2    udp6      ::.233.222             mountd     superuser
    100005    2    tcp6      ::.211.16              mountd     superuser
    100005    3    udp       0.0.0.0.188.56         mountd     superuser
    100005    3    tcp       0.0.0.0.158.62         mountd     superuser
    100005    3    udp6      ::.152.158             mountd     superuser
    100005    3    tcp6      ::.201.200             mountd     superuser

答案1

经过更多调查后,我可以至少部分地回答我自己的问题:

  1. 写入其中一台设备是由 NFS 客户端之一上疯狂运行的进程引起的。我通过一次关闭一个客户端来实现这一目标。最好有一个命令来查看哪个客户端正在写入 NFS 服务器,但如果有的话我找不到它。

相关内容