如果我要在一台机器上debugging一个服务,并且确定写入失败了,我怎么能检查写入失败的原因? 我知道C中的系统调用将返回-1,然后我们可以检查int errno包含的常量( EINVAL等)。 但是,如果我不能检查这个问题,我将如何去检查错误的原因? 在这种情况下,dmesg会在块设备级别显示错误吗?
我试图找出我的服务器是networkingIO绑定还是CPU绑定。 我查看了一些典型工具的输出以检查系统的当前状态(输出iostat,sar和top在下面),但是我不太确定我的解释是否正确。 这是我的设置: 应用程序服务器(其中2个):(Debian,JBoss),四核,16 GB RAM 数据库服务器:(Suse,MySQL),四核,64GB RAM 从应用程序服务器到数据库服务器的通信通过防火墙(能够达到100 Mbit) 服务器在做什么: 部署在JBoss中的应用程序读取大量的文本文件,执行一些合理性检查(涉及与数据库交谈),最后将文本文件中的数据存储在数据库中 为了提高吞吐量,我们只安装了4个额外的JBoss实例,所以现在有5个应用程序执行导入(无集群)。 不幸的是,performance并没有像我希望的那样有所提高。 这些是我迄今在数据库服务器上收集的统计数据: 最佳: top – 14:09:28 up 27 days, 9:45, 1 user, load average: 0.65, 0.69, 0.83 Tasks: 92 total, 1 running, 91 sleeping, 0 stopped, 0 zombie Cpu(s): 10.8% us, 1.1% sy, 0.0% ni, 85.5% id, 1.7% wa, 0.1% hi, 0.8% […]
我试图了解Windows上的内置IOcaching。 如果一个应用程序写入一个文件,然后读取/写入多个后续时间,似乎IOcaching应该允许这发生与系统内存一样快的速度? 那么Windows会逐渐将更改以非阻塞的方式写回物理磁盘? 不过,我在这个网站上看到了其他与虚拟硬盘有关的问题,用户通过将一部分系统内存挂载为磁盘驱动器,可以看到显着的收益。 如果IOcaching像我上面描述的那样工作,为什么这甚至是必要的? Windows有设置来调整? 这引出了我真正的问题:使用虚拟磁盘并手动将更改手动同步到物理磁盘,甚至几分钟或几小时之后,是否有意义? 编辑:修正了DMA与IO Cache的误解在Evan Anderson的回复中得到纠正。
我们有硬盘的问题,使所有的挂载点只能读取。 dmesg输出: end_request: I/O error, dev sda, sector 15574609 sd 0:0:0:0: SCSI error: return code = 0x00040000 我们要分析一个正在运行的程序,因为当他不能写入文件系统时它应该死掉。 所以,我们想用strace来debugging系统调用。 但strace的输出是: Bus error 似乎一些资源不可用的机器或一些低级别的错误。 在系统pipe理员修复磁盘之前,我被困在如何分析程序的问题上。
我们使用Dovecot imap服务器运行30k个电子邮件帐户(Maildir)的邮件服务器。 我们遭受高IO负荷,特别是当用户开始search大IMAP文件夹。 有什么办法阻止BODYsearch? 我需要允许通过HEADERSsearch(subject,from / to)。 在configuration/文档中我找不到任何东西。
从Munin diskstats插件/ dev / sda图的磁盘IO显示Max IO / sec -read / +写入1.75k / 920.92。 磁盘IO图中的k个单元是什么意思?
启动CentOS 5.8机器时磁盘I / O很高。 磁盘IO的进程是kmirrord,kjournald和pdflush。 我已经完成了以下工作: 1)用noatime参数挂载文件系统。 2)Linux内核版本<2.6.20,因此iotop不报告。 我启用了block_dump,这表明kmirrord,kjournald和pdflush正在广泛读取/写入磁盘。 服务器负载也随着磁盘利用率的提高而上升。 这会持续一段时间(大约半个小时),然后系统恢复正常。 还有什么我可以进一步检查?
等待几毫秒被认为是高的? 我有800ms和600ms iostat -x avg-cpu: %user %nice %system %iowait %steal %idle 1.28 0.00 0.22 0.90 0.00 97.60 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util cciss/c0d0 0.14 29.17 0.50 36.79 53.47 528.92 15.62 1.22 32.80 3.29 12.28 cciss/c0d0p1 0.00 0.00 0.00 0.00 0.01 0.00 19.23 0.00 12.43 8.85 0.00 cciss/c0d0p2 0.02 22.06 0.07 […]
我有一个networking服务器,包含HP MSA2040 Storage(10 TB总存储)中的内容。 我不断收到像下面的错误 Jul 31 19:06:24 xxxxxxxx*** kernel: blk_update_request: I/O error, dev sda, sector 7094923416 Jul 31 19:06:24 xxxxxxxx*** kernel: buffer_io_error: 1110 callbacks suppressed Jul 31 19:06:24 xxxxxxxx*** kernel: Buffer I/O error on dev sda, logical block 886865171, lost async page write Jul 31 19:06:24 xxxxxxxx*** kernel: Buffer I/O error on dev sda, […]
我有一台Nexenta / ZFS NAS,用作小型VMware vSphere场的NFS后备存储。 目前我有9x1TB磁盘全部镜像(最后一个磁盘configuration为写入日志设备)。 磁盘性能对于我对NFS的需求非常好。 不过,我注意到的一件事是,如果我直接在NAS上执行任何IO操作,则VM性能会变慢。 一个例子是在同一个zpool中的两个不同的ZFS文件系统之间复制1TB的数据。 有没有什么好的方法可以确保NFS守护进程执行的IO请求优先于磁盘上的其他IO操作? 在一个理想的世界里,我会把我的虚拟机备份到一个完全独立的zpool上,这样它们就不会受到ZFS文件系统负载的影响。 不过,我想知道是否有一个单一的zpool做一个好方法。 Linux有ionice,所以如果我使用的话,如果我要以很低的IO优先级移动大量的数据,我可以用ionice作为前缀。 但是,我不认为它在Solaris内核上可用。 有什么build议么?