`
edgar108
  • 浏览: 33412 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

linux 环境调优

    博客分类:
  • java
阅读更多

 

网上看到的,保存一份。。

另一份Java应用调优指南之-前菜

January 1, 2016 | Filed under 工作 技术

每一次成功的调优,都会诞生又一份的调优指南。

一些必须写在前面的军规,虽然与Java应用的调优没直接关联,但是测试同学经常不留神的地方,导致应用的优化变成一场测试环境调优的闹剧。

 

1 独占你的测试机器

包括跑JMeter的那些机器。

"top"或者"pidstat -l 2 10" 看一下,其他的路人甲乙丙丁的应用都关干净了没。

如果是云主机,确保百分百占有宿主机的资源,或者深夜大家下班了你在家连VPN回来跑。

 

2 了解你的测试机器

必须完完全全的了解你的机器,才知道有没卡在某个瓶颈,或者与线上环境、其他测试结果的比较。

还是那句, 包括跑JMeter的那些机器。

 

2.1 CPU

"cat /proc/cpuinfo", 看最后一条就好,比如

 

processor : 23
model name : Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
physical id : 1
cpu cores : 6

所有数字都从零开始,physical id:1即两颗cpu, cpu core: 6即6核,processor : 23即24个处理器。

 

2 CPU * 6 Core * 2HT(Intel超线程技术) = 24 Processor

不过也有很多同事喜欢说24核,也懒得纠正了。

 

2.2 内存

"free -h" 没什么好说的。

 

2.3 硬盘

  • 查看大小、分区、文件系统类型: "df -hT"
  • 硬盘是否SCSI:/dev/sdX就是scsi的,hdX就是普通的。
  • 硬盘是否SSD : "cat /sys/block/sda/queue/rotational", 0是SSD,1是传统硬盘

普通硬盘的写速度大概100M/s,RAID级别的查看不方便,SSD的速度也不定,所以用dd测一下最靠谱:

 

dd if=/dev/zero of=dd.file bs=8k count=128k conv=fdatasync
dd if=/dev/zero of=./dd.file bs=1G count=1 conv=fdatasync

上面命令测试了分别以每次8k和1g的大小,写入1g文件的速度。

  • if:输入文件名, /dev/zero 设备无穷尽地提供0
  • of:输出文件名
  • bs:块大小
  • count:次数
  • conv=fdatasync :实际写盘,而不是写入Page Cache

硬盘读速度的测试同理,不过要先清理缓存,否则直接从Page Cache读了。

 

sh -c "sync && echo 3 > /proc/sys/vm/drop_caches”
dd if=./dd.file of=/dev/null bs=8k

 

2.4 网卡

先用ifconfig看看有多少块网卡和bonding。bonding是个很棒的东西,可以把多块网卡绑起来,突破单块网卡的带宽限制。

然后检查每块网卡的速度,比如"ethtool eth0"。

再检查bonding,比如"cat /proc/net/bonding/bond0", 留意其Bonding Mode是负载均衡的,再留意其捆绑的网卡的速度。

最后检查测试客户机与服务机之间的带宽,先简单ping或traceroute 一下得到RTT时间,iperf之类的可稍后。

 

2.5 操作系统

Linux的内核版本,是否64位: "uname -a"
Redhat/CentOS版本 : "cat /etc/redhat-release"

 

3. 布置好你的机器状态采集工具

讲究点,要用来出报告的,用Zabbix之类。

实时观察的,我喜欢dstat,比vmstat,iostat, sar们都好用,起码对得够齐,单位能自动转换。不过dstat需要安装(yum install dstat,如果装不上,就要将就着用vmstat,sar了)

  • dstat:默认,已有足够信息
  • dstat -am:再多一个memory信息
  • dstat -amN bond0,lo: 如果有bonding,dstat会把bond0和eth0 算双份,还有lo的也算到总量里,所以还是用-N指定网卡好。

要看IO细节,还是要用"iostat -dxm 5"

  • -d 不看cpu信息
  • -x 看细节
  • -m 以m为单位,而不以block原始size
  • 5 5秒的间隔

 

4. JMeter的调优顶一半的事

JMeter的版本越新越好。

 

4.1 JMeter的JVM参数

它默认连个垃圾收集算法都没有配,对延时要求高的,必须配上CMS或G1,内存也整大点降低GC的频率。其他的,给Server配的啥参数,给JMeter也来上一份,最好把-XX:+AggressiveOpts也加上。

 

4.2 测试计划的编写

什么if 语句,以及所有其实用动态语言来实现的都挺慢的。
xPath抽取结果集里的字段之类看着就慢的也别写了。
别加任何监听器和图形。
再配置输出日志的格式,能不要的列都别要了,最极端的其实就延时这列有用。

 

4.3 JMeter的运行

在Linux上用命令行跑,别偷懒用Window开着界面跑。
别开超过200条线程。
可以在不同机器上起多个JMeter,用集群汇总的模式。

 

4.4 结果的统计

初始连接,Server端热身,JVM编译热点方法等都需要时间,所以建议统计前删掉前面的一些日志。

要配置一下才能看到99.9%, 99.99% 分位数的延时,另外因为之前输出日志时省略了很多列,导入日志的时候配置也要如此。

但如果不能XWindows Forward,还要把日志下载回来再导入本地的JMeter,那还不如自己动动手,用sed, awk, sort配合一下自己写个分析延时的脚本。

 

5. 其他被依赖的节点

比如所依赖的数据库够不够快,Restful API的模拟器够不够快,负载均衡器如HAProxy优化配置了没有。

 
唠叨完这些写给测试同学的话,下篇,就可以正式开始调优了。

更重要的是,唯品会广州的基础架构部还在继续招人啊,简历请砸 calvin.xiao@vipshop.com

另一份Java应用调优指南之前菜 by 江南白衣 转载请保持链接。

备注: pidstat/iostat要用yum install sysstat来装。

分享到:
评论

相关推荐

    linux性能调优.pdf

    Linux性能调优是一个系统性的工程,它不仅要求我们具备对性能指标深入的理解,还要求我们能够灵活运用各种性能分析工具,并且制定出切实可行的优化策略。在如今的大数据和高并发的背景下,如何让Linux系统更好地服务...

    Linux性能调优指南,IBM专家资深指导

    10. **系统调优实战**:通过具体的案例分析,展示如何在实际环境中应用上述调优技巧,解决常见的性能问题。 11. **自动化调优**:介绍使用bash脚本、systemd服务以及监控工具(如Nagios、Zabbix)实现自动化的性能...

    Linux性能调优工具

    ### Linux性能调优工具及其应用 #### 一、引言 在现代IT环境中,Linux作为最流行的开源操作系统之一,在服务器领域扮演着极其重要的角色。随着云计算技术的发展,大量的虚拟化和容器技术使得Linux系统在资源管理和...

    linux性能调优实验环境.pdf

    在Linux环境下,性能调优可以从多个层面进行,包括但不限于系统内核参数调整、进程调度、文件系统优化、内存管理、I/O子系统配置以及网络参数设置等。本次文档提供的内容涉及了使用特定工具监控和分析系统性能,以...

    LINUX性能调优完全手册

    /etc/profile 文件是Linux系统中的一个重要文件,包含了系统的环境变量和启动程序的配置信息。在该文件中,我们可以进行配置,以实现性能优化。例如,我们可以在该文件中设置优化标志,以提高系统的运行速度。 2. ...

    linux性能调优方法总结

    本文将通过案例介绍在生产环境中实施Linux性能调优的具体方法,详细内容涉及网络性能优化、磁盘子系统调优以及TCP参数调优等多个方面。 首先,Linux系统中的网络性能优化是调优工作的重点之一。通过调整内核参数,...

    Linux性能调优若干技巧【老男孩linux实训分享】

    ### Linux性能调优技巧详解 #### 一、引言 在现代数据中心中,Linux作为最常用的服务器操作系统之一,其性能的高低直接影响着整个系统的稳定性和效率。为了更好地利用硬件资源,提升系统的整体性能,掌握一定的...

    linux 性能调优 linux performance truning

    8. **系统调优实践**:结合具体案例,展示如何在实际环境中应用上述理论知识进行系统调优,包括内核参数调整、服务优化等。 9. **安全与稳定性**:在追求性能的同时,也要考虑系统的安全性和稳定性。书中可能会讨论...

    Linux内核调优

    在Linux环境中,内核调优是一项重要的技术活动,旨在优化系统的性能和安全性。通过对内核参数的调整,可以显著提升服务器的运行效率,尤其是在面对高并发连接请求时。本文将详细介绍如何修改用户进程可打开文件数...

    Linux性能调优命令精华

    在IT领域,Linux系统因其稳定性和可定制性而被广泛应用于服务器、云计算和嵌入式设备。对于系统管理员和开发者来说,...通过对这些命令的深入理解和熟练运用,我们可以更好地管理和维护Linux环境,提升系统的整体性能。

    Linux性能调优命令详解.docx

    《Linux性能调优命令详解——以iostat为例》 在Linux系统管理中,性能调优是一项至关重要的任务,它关乎系统的稳定性和效率。其中,iostat是一个强大的工具,用于监控和分析系统的I/O性能。本文将深入探讨iostat...

    Linux性能调优的几种方法

    例如,在Red Hat Enterprise Linux AS(RHEL AS)系统中,apmd(高级电源管理守护进程)可以被安全地停止,因为它主要用于管理电池状态并记录日志,但在服务器环境中可能并不需要这一功能。需要注意的是,关闭某些...

    Linux网络调优指导.pdf

    Linux网络调优作为一项关键的技术,对于保证基于AMD EPYC系列处理器的服务器稳定高效运行尤为重要。随着企业对数据处理和传输能力的需求日益增长,网络调优技术的掌握成为了系统管理员必须具备的技能之一。本文档...

    内核完全注释 linux系统管理员手册 linux性能调优 linux编程者手册

    了解这些内容可以帮助程序员更有效地利用Linux环境,创建稳定且高效的软件。 总的来说,这些书籍覆盖了从基础操作到高级技术的全面内容,无论是新手还是经验丰富的Linux用户,都能从中受益。通过学习这些知识,你...

    Linux服务器性能调优

    通过本书,将可以学习以下内容: ·安装和配置linux以便达到最高性能 ·为用户的linux环境评估并选择适当的硬件体系结构 ·理解linux2.4至2.6版本的内核:组件、性能问题以及优化可能性 ·掌握linux性能调整的核心...

    LINUX性能调优方法总结.docx

    Linux性能调优是提高系统效率和稳定性的关键环节,尤其对于服务器环境而言至关重要。本文将深入探讨几个核心的Linux性能优化方法,重点关注网络性能和磁盘子系统的优化。 首先,我们来看网络性能调优。在Linux中,...

    Linux下的MySQL调优

    MySQL作为一款广泛使用的数据库管理系统,在Linux环境下进行调优能够显著提高其性能与稳定性。本文将详细介绍Linux环境下MySQL调优的具体步骤与方法,帮助读者理解并掌握如何针对不同的性能瓶颈进行有效的优化。 ##...

    英特尔800系列以太网适配器Linux性能调优指南

    内容概要:本文档为英特尔800系列以太网适配器在Linux环境中的性能优化提供了详细指导。主要内容涵盖初始检查清单、基准性能测试与调优方法论、性能故障排除、ice驱动程序设置调整以及平台和操作系统层面的调优建议...

    Linux Performance and Tuning Guidelines (IBM 原版英文书) Linux 性能调优

    ### Linux性能调优指南 #### 一、理解Linux操作系统 **1.1 Linux进程管理** - **1.1.1 进程的概念** - 在Linux系统中,进程是资源分配的基本单位,也是运行程序的基本单位。每一个正在执行的程序都是一个进程。 ...

Global site tag (gtag.js) - Google Analytics