AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 78972
Accepted
Alex N
Alex N
Asked: 2009-10-28 18:47:13 +0800 CST2009-10-28 18:47:13 +0800 CST 2009-10-28 18:47:13 +0800 CST

为什么 Ubuntu 在海量网络、磁盘 I/O 上运行缓慢?

  • 772

不知道从哪里开始,但我经常在我的 Ubuntu Hardy 上看到这个奇怪的问题。

系统是带有 RAID10 磁盘和 3Gb RAM 的 Core i7-920,尽管这可能不是重点。它上面有多个 Samba 共享。每次有人将大型(多个演出)上传到共享时,系统响应能力都会显着下降(显着)。

文件系统:ReiserFS (v3)

vmstat 和 top 都没有显示明显的 I/O 等待时间,很少有阻塞进程(比如 2 个用于 4 核系统),并且偶尔会向磁盘写入约 13000 个块。平均 负载始终低于 0.5(同样系统是启用了 HT 的四核,因此它有 8 个逻辑核心)。

但是,即使我移动鼠标光标,它也会严重滞后......

这是在大量传入网络 I/O 期间典型的 vmstat 输出:

vmstat -n 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0 419268  93724  48052 2071148    0    0     9     3   11    4  1  1 95  2
 1  0 419268  91560  48052 2073292    0    0     0     0 2396 5716  5  1 94  0
 0  0 419268  89636  48056 2075164    0    0     0     0 2173 5537  2  1 97  0
 2  0 419268  87836  48056 2077136    0    0     0     0 2057 5216  1  1 98  0
 1  0 419268  85716  48060 2078812    0    0     0 10104 2108 5261  2  1 97  0
 0  0 419268  91940  48060 2071748    0    0     0     0 2221 6153  2  1 97  0
 2  0 419268  90368  48064 2073640    0    0     0     0 2104 5384  1  1 98  0
 0  0 419268  89000  48064 2075092    0    0     0     0 1781 4700  1  1 98  0
 1  0 419268  87140  48064 2076640    0    0     0     0 2045 5104  1  1 98  0
 1  1 419268  85584  48068 2078240    0    0     0 10112 1945 4343  2  1 91  7
 0  0 419268  92668  48068 2071764    0    0     0    16 2064 5197  2  1 96  1
linux
  • 5 5 个回答
  • 6463 Views

5 个回答

  • Voted
  1. Teddy
    2009-10-28T20:00:38+08:002009-10-28T20:00:38+08:00

    尝试运行iotop- 它应该向您展示一些东西。

    • 3
  2. user24091
    2009-10-30T06:48:08+08:002009-10-30T06:48:08+08:00

    您是否在正常操作期间看到许多中断(System - in)和上下文切换(System - cs)?我想知道因为您对鼠标光标变慢的描述。如果有问题导致您的系统在负载下被中断淹没,这将导致一切变慢。

    只是为了在黑暗中全面拍摄,/var/log/dmesg 中是否有任何关于您的磁盘或 RAID 设备的错误或超时的信息?

    编辑1:

    今天早上我看到一篇文章,听起来确实像你在盒子上看到的问题。Greg Smith 对似乎长时间冻结磁盘写入的服务器进行了分析。他的特殊调查方法涉及运行命令:

    while [ 1 ]; do cat /proc/meminfo; sleep 1; done
    

    并在系统似乎挂起之前和期间查看“写回:”缓存大小。如果回写缓存确实已填满(大约 >40% 已满)并导致系统在刷新时暂停写入,那么 Greg 建议进行一些操作系统调整以缓解该问题。Greg 的博客条目可以在http://notemagnet.blogspot.com/2008/08/linux-write-cache-mystery.html找到

    • 3
  3. phoebus
    2009-10-28T19:21:05+08:002009-10-28T19:21:05+08:00

    我不确定它是否发生在 Linux 上,但在 Windows 上,高速网络上的 Samba 传输速度可能超过磁盘 I/O 速度,而且由于一些早期的 Windows 版本具有非常不智能的网络传输缓存,因此您最终会得到一个缓冲区中等待写入磁盘的大量数据。这通常会破坏 XP 和早期系统的响应能力(也许 Vista 也一样,IDK 我从来没有大量使用过它)。

    • 2
  4. Best Answer
    3dinfluence
    2009-11-11T19:56:53+08:002009-11-11T19:56:53+08:00

    您可以尝试使用 IO 调度程序。默认的 IO 调度程序是 CFQ,它适用于台式机,但根据我的经验,对于文件服务器,Deadline 往往效果更好。您可以即时更改 IO 调度程序,以便您可以轻松地对其进行试验,看看哪种方式最适合您的情况。

    要列出可用的 io 调度程序,请使用此命令。

    cat /sys/block/sdb/queue/scheduler  
    

    这应该返回noop anticipatory deadline [cfq]

    要将您的调度程序更改为截止日期,请在适当的设备上使用以下命令。

    sudo echo "deadline" > /sys/block/sdb/queue/scheduler
    
    • 2
  5. Ronald Pottol
    2009-11-11T20:48:37+08:002009-11-11T20:48:37+08:00

    我想说 ReiserFS 有一个锁,因此并不适合大型(许多磁盘)RAID。但是已经很久了,所以我可能是错的。

    我怀疑更改调度程序会有所帮助。

    • 1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve