`
chinese.darren
  • 浏览: 99559 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

性能监控/优化系列——IO

阅读更多

 Network I/O相关

1. 在分布式系统中会比较容易发现network bandwidth or network I/O方面的性能。
2. 如果系统的网络接口发送的数据大于网络硬件所能处理的值,那么数据就会被缓存到OS的buffer中,造成系统的延时。
3. netstat命令有局限性,不能统计到网络目前的吞吐量、利用率、饱和度等,nicstat这个小工具更好用,包含读写率(字节和包)、利用率和饱和度:
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
19:24:16 yukonx0 0.75 4.68 2.72 3.80 281.3 1261.9 0.00 0.00
19:24:17 yukonx0 54.14 1924.9 724.1 1377.2 76.56 1431.2 1.58 0.00
19:24:18 yukonx0 44.64 1588.4 598.0 1138.0 76.45 1429.3 1.30 0.00
19:24:19 yukonx0 98.89 3501.8 1320.0 2502.0 76.72 1433.2 2.87 0.00
19:24:20 yukonx0 0.43 0.27 2.00 3.00 222.0 91.33 0.00 0.00
19:24:21 yukonx0 44.53 1587.2 598.0 1134.0 76.26 1433.2 1.30 0.00
19:24:22 yukonx0 101.9 3610.1 1362.0 2580.0 76.64 1432.8 2.96 0.00
19:24:23 yukonx0 139.9 4958.1 1866.7 3541.4 76.73 1433.6 4.06 0.00
19:24:24 yukonx0 77.23 2736.4 1035.1 1956.2 76.40 1432.4 2.24 0.00
19:24:25 yukonx0 48.12 1704.1 642.0 1220.0 76.75 1430.3 1.40 0.00
19:24:26 yukonx0 59.80 2110.8 800.0 1517.0 76.54 1424.8 1.73 0.00
4. IO和NIO,NIO并不比传统IO快,而是在高并发场景下能够有效减少thread数,从而提供CPU的利用率。原因为:传统的IO在accept到一个socket后,一个线程会负责这个socket的读写,如果这个过程中数据还没有准备完毕这个线程会一直等待直到数据处理完或超时。NIO采用的是selector方式,accept到一个socketChannel后,会将这个socketChannel注册到seletor名下,这个时候并不需要worker线程,当读写的数据准备好时seletor会有响应的事件产生,此刻再将这个socketChannel丢给一个worker线程,既然数据都准备好了,worker线程就不需要等待直需要做相应的业务逻辑。从上面的分析可知,在高并发环境下,传统IO需要更多的worker线程(数据准备等待的开销都在它上面),而NIO确是直接读写数据就好了,没有什么等待,所以worker线程数相对较小。
5. 优化:大量小数据网络读写会消耗很多的CPU,优化方法可以有:减少网络调用(合并数据,压缩),使用NIO减少线程数,线程越多维护的开销就越大。

磁盘 I/O相关
1. 对于磁盘IO密集型应用需要严格监控磁盘IO的利用率,eg数据库。
2. 常用的命令iostat -xm,它能够监控disk I/O utilization and system or kernel CPU utilization。另外还有:sar
$ iostat -xm 5
avg-cpu: %user %nice %system %iowait
0.20 0.40 16.37 83.03
Device: rrqm/s r/s rsec/s rMB/s avgqu-sz await svctm %util
hda 9662.87 305.59 87798.80 42.87 1.64 5.39 3.17 97.01
hdb 7751.30 225.15 63861.08 31.18 1.18 5.24 3.11 69.94
3. 最好能够监控到哪些应用在使用磁盘IO,都读了哪些文件。
4. 如果发现磁盘的利用率很高,需要分析你的应用所用磁盘的性能,指标:disk service times, seek times, and the time spent servicing I/O events。
5. 从硬件和OS级别提高磁盘IO的能力:1)A faster storage device,如ssd,futionIO;2)多磁盘(或阵列)均衡压力;3)调优OS的cache;4)启用磁盘cache。
6. 对于应用来说,可以使用本地缓存/分布式缓存集群来减少磁盘IO的压力。另外在编成过程中启用读写缓存也能很好的减少与磁盘IO的交互次数,如java.io.BufferedOutputStream and java.io.BufferedInputStream
分享到:
评论

相关推荐

    oracle性能监控sql 监控当前会话 执行的sql及io等信息

    Oracle性能监控SQL——监控当前会话执行的SQL及IO等信息 Oracle性能监控是数据库管理员的重要职责之一,通过监控数据库的性能,可以及时发现问题,避免数据库的宕机和性能下降。本文将介绍一些常用的Oracle性能监控...

    HBase最佳实践-读性能优化策略-3——HBase服务器端优化.pdf

    通过持续监控、调整配置和优化数据分布,可以显著提高HBase集群的读性能,减少延迟,并保证系统的稳定运行。在实际应用中,还应注意定期评估优化效果,以便及时调整策略,适应不断变化的业务需求。

    Java程序性能优化 让你的Java程序更快、更稳定

    Java程序性能优化是每个开发人员都需要关注的重要领域,它涵盖了多个方面,旨在提高代码执行效率,减少资源消耗,以及提升应用程序的稳定性和响应速度。在本文中,我们将深入探讨Java性能优化的关键点,帮助你的Java...

    linux操作系统性能监控优化–CPU、Memory、IO、Network

    操作系统性能监控优化不外乎对CPU、Memory、IO、Network这四个方面,下面分别介绍使用工具和指标  一、CPU  1、良好状态指标  CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System...

    linux下监控IO等状态的小工具nmon_linux_14g.tar

    2. **性能优化**:通过监控数据,我们可以调整系统配置,如内存分配、磁盘调度策略,甚至进程优先级,以提升整体性能。 3. **容量规划**:长期收集nmon数据,可以预测未来系统资源的需求,为硬件升级或资源分配提供...

    OS + Linux Disk disk lvm / disk partition / disk mount / disk io

    通过监控`iostat`、`iotop`等工具,我们可以了解系统的I/O活动情况,并据此调整系统设置以优化性能。 在提供的文档"Linux+LVM-逻辑卷管理.doc"中,预计会详细阐述LVM的创建、扩展、收缩、备份和恢复等操作步骤,...

    GBase8s监控指标调研文档.doc

    《GBase8s监控指标详解——磁盘、IO与网络监控》 GBase8s,作为南大通用的一款高性能数据库管理系统,其稳定性和性能优化离不开对系统资源的精确监控。本文将深入探讨GBase8s在磁盘、IO和网络方面的关键监控指标,...

    提升.IO.zip

    12. **I/O性能分析工具**:如iostat、iotop、strace等,可以帮助开发者监控和分析系统的I/O性能,找出瓶颈并进行优化。 综上所述,"提升.IO.zip"可能包含了关于如何通过各种技术和策略来改善应用程序的I/O性能的...

    Factory IO物流堆垛机堆垛仿真项目博途1500项目

    这包括定期检查硬件状态、故障排查、性能监控以及更新和升级控制软件。有效的运维管理能确保堆垛机系统持续稳定运行,减少停机时间和维护成本。 "博途1500"可能是西门子的TIA Portal V15或更高版本,这是集成自动化...

    RapidIO specification V1_2 SRIO.zip

    "05gsmlspec.pdf"涵盖了General System Management Layer(通用系统管理层)的规格,这部分主要关注系统级的管理和控制,如设备配置、故障检测和恢复,以及性能监控。 "09fcspec.pdf"是关于帧控制的规范,它定义了...

    select_IO_model.rar_select模型_socket select

    本压缩包"select_IO_model.rar"聚焦于一种经典的I/O模型——select模型,它在处理多个并发连接时表现出良好的兼容性和实用性。 **select模型** select模型是一种多路复用I/O模型,它允许程序监控多个文件描述符...

    11. 高级IO模型(1)1

    在计算机科学中,I/O(Input/Output)模型是处理数据传输的核心机制,尤其是在服务器编程领域。本节将深入探讨几种高级I/O模型,重点分析它们的特点和...在服务器开发中,理解并熟练运用这些模型对于优化性能至关重要。

    网络流量监控VC 6.0

    6. **性能优化**:考虑到实时性要求,NetTraffic可能采用多线程、异步IO等技术,以确保在大量数据流下仍能保持良好的响应速度。 在使用NetTraffic时,用户需要注意以下几点: - 确保具备管理员权限,因为监控网络...

    微软-SQL2005查询优化视频

    本视频教程——"微软-SQL2005查询优化视频",由微软的专业讲师主讲,旨在帮助用户深入理解和掌握SQL Server 2005中的查询优化技术。 首先,查询优化是SQL Server执行SQL语句的关键步骤,主要涉及如何选择最佳的执行...

    数据库应用技术——SQL Server 2000简明教程电子教案

    "数据库应用技术——SQL Server 2000简明教程电子教案"涵盖了SQL Server 2000的核心概念和技术,包括数据库设计、SQL语言、事务处理、性能优化、备份恢复,以及报表和分析服务等,是学习和掌握SQL Server 2000数据库...

    C# FileEventWatcher文件监控源代码

    在.NET框架中,`System.IO`命名空间提供了一个强大的工具——`FileSystemWatcher`类,它允许程序员监视指定目录及其子目录中的文件系统更改。这个类就是我们常说的FileWatcher,用于实现实时监控文件或目录的创建、...

    得克威尔早期ESI文件版本——可用来配置EtherCAT

    同时,由于文件名为"EX-1100_V1.6.4-20220209175843",我们可以推断这是得克威尔EX-1100系列的一个版本,具体可能是某个IO模块的固件或配置工具。在进行系统升级或维护时,必须参照得克威尔提供的相关文档和指南,以...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    关于java程序员发展需要学习的路线整理集合 技术 应用技术 计算机基础知识 cpu mem disk ... 线程,进程 第三方库 ... UMPAY——编码规范 ... 性能监控 告警 日志 设计模式 数据结构与算法 各种工具

    egret_test.rar_Accelerate

    这可能包括各种基准测试、性能监控以及可能的优化算法。开发者可能通过这个测试来识别性能瓶颈,并针对这些瓶颈进行优化,以达到加速目的。例如,他们可能已经发现pixrect处理在特定情况下成为性能的限制因素,因此...

    开源项目-solo-io-gloo.zip

    6. **监控与日志**:Gloo提供了详细的度量指标和日志,便于进行性能监控和故障排查。它可以与Prometheus、Grafana等工具集成,以实现可视化的运维监控。 7. **部署与操作**:Gloo可以在Kubernetes和其他容器编排...

Global site tag (gtag.js) - Google Analytics