`
chinese.darren
  • 浏览: 101166 次
  • 性别: 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集群的读性能,减少延迟,并保证系统的稳定运行。在实际应用中,还应注意定期评估优化效果,以便及时调整策略,适应不断变化的业务需求。

    关于IO性能的测试工具

    6. **集成性**:Oracle Orion与Oracle数据库及其他IT基础设施高度集成,支持多平台环境下的IO性能监控,包括云环境和虚拟化环境。 ### Oracle Orion的应用场景 - **数据库性能调优**:在数据库服务器上部署Oracle ...

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

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

    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的创建、扩展、收缩、备份和恢复等操作步骤,...

    Oracle数据库服务器IO高的分析方案.docx

    ### Oracle数据库服务器IO高的分析方案 #### 前言 在日常运维中,经常会...重要的是,不仅要关注硬件升级或扩展,还需要从软件层面出发,通过优化SQL查询等方式减少不必要的IO操作,从而从根本上改善系统的IO性能。

    GBase8s监控指标调研文档.doc

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

    万可WAGO IO System模块手册.pdf

    《万可WAGO IO System模块手册》是针对万可公司推出的分布式自动化技术产品——WAGO I/O System 750系列和753系列的详细操作指南。该手册由WAGO GmbH & Co. KG出版,涵盖了最新的Version 3.0.5版本的信息。 手册...

    提升.IO.zip

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

    RapidIO specification V1_2 SRIO.zip

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

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

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

    AIX Performance Tuning

    AIX性能调优是一门专门针对AIX操作系统环境下性能监控和优化的技术。AIX是IBM公司开发的UNIX操作系统,广泛应用于企业级服务器领域,特别是在其Power架构的服务器上。性能调优可以显著提升系统的响应速度和处理能力...

    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模型,重点分析它们的特点和...在服务器开发中,理解并熟练运用这些模型对于优化性能至关重要。

    腾讯手游优化之路.pdf

    #### 绩效优化案例——《王者荣耀》 以《王者荣耀》为例,可以看到优化前后显著的变化: 1. **优化前**:游戏存在明显的卡顿、发热、耗电等问题,影响了用户体验。 2. **优化后**:通过对性能瓶颈的识别和针对性的...

Global site tag (gtag.js) - Google Analytics