查看剩余内存: free -m #-/+ buffers/cache: 6458 1649 #6458M为真实使用内存 1649M为真实剩余内存(剩余内存+缓存+缓冲器) #linux会利用所有的剩余内存作为缓存,所以要保证linux运行速度,就需要保证内存的缓存大小 系统信息: uname -a # 查看Linux内核版本信息 cat /proc/version # 查看内核版本 cat /etc/issue # 查看系统版本 lsb_release -a # 查看系统版本 需安装 centos-release locale -a # 列出所有语系 locale # 当前环境变量中所有编码 hwclock # 查看时间 who # 当前在线用户 w # 当前在线用户 whoami # 查看当前用户名 logname # 查看初始登陆用户名 uptime # 查看服务器启动时间 sar -n DEV 1 10 # 查看网卡网速流量 dmesg # 显示开机信息 lsmod # 查看内核模块 硬件信息: more /proc/cpuinfo # 查看cpu信息 lscpu # 查看cpu信息 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看cpu型号和逻辑核心数 getconf LONG_BIT # cpu运行的位数 cat /proc/cpuinfo | grep 'physical id' |sort| uniq -c # 物理cpu个数 cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l # 结果大于0支持64位 cat /proc/cpuinfo|grep flags # 查看cpu是否支持虚拟化 pae支持半虚拟化 IntelVT 支持全虚拟化 more /proc/meminfo # 查看内存信息 dmidecode # 查看全面硬件信息 dmidecode | grep "Product Name" # 查看服务器型号 dmidecode | grep -P -A5 "Memorys+Device" | grep Size | grep -v Range # 查看内存插槽 cat /proc/mdstat # 查看软raid信息 cat /proc/scsi/scsi # 查看Dell硬raid信息(IBM、HP需要官方检测工具) lspci # 查看硬件信息 lspci|grep RAID # 查看是否支持raid lspci -vvv |grep Ethernet # 查看网卡型号 lspci -vvv |grep Kernel|grep driver # 查看驱动模块 modinfo tg2 # 查看驱动版本(驱动模块) ethtool -i em1 # 查看网卡驱动版本 ethtool em1 使用分析系统分析 Web 日志(如逆火软件) 分析系统性能瓶颈点(IO/Memory/CPU,常用工具,top 命令中 shift 组合键的特殊用 Sar/vmstat/iostat/ipcs) 日志管理常用命令: history # 历时命令默认1000条 HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # 让history命令显示具体时间 history -c # 清除记录命令 cat $HOME/.bash_history # 历史命令记录文件 lastb -a # 列出登录系统失败的用户相关信息 清空二进制日志记录文件 echo > /var/log/btmp last # 查看登陆过的用户信息 清空二进制日志记录文件 echo > /var/log/wtmp 默认打开乱码 who /var/log/wtmp # 查看登陆过的用户信息 lastlog # 用户最后登录的时间 tail -f /var/log/messages # 系统日志 tail -f /var/log/secure # ssh日志 02优化 优化可以说是运维最吃香的技能,基本会优化的运维普遍工资很高,而且优化是要承担风险的,并不是网上搜个文章改一下配置文件或者参数就叫优化了,这样很容易造成宕机。 优化是根据实际的现场环境硬件各个参数进行部分优化,提高软件性能和网站性能。这个我只能讲半知半解,当时优化 MySQL 和 Tomcat 参数也是根据网上文章和官网文档查找参数在虚拟机上测试然后查看性能。 成本优化,性能优化,这里我给出 Tomcat 优化 JVM 参数(做过相应测试才放到现场环境的):(记住无监控不调优) -标准参数,所有jvm都应该支持 -X 非标,每个jvm实现都不同 -XX 不稳定参数,下一版本可能会取消 serial collector 单线程 序列化 parallel collector 多线程 启动 jvisualvm.exe 监控 dump 内存溢出: -Xms:初始堆大小 -Xmx:最大堆大小 -Xss:线程栈大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值,如3, 标示年轻代:年老代比值1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中的eden区与2个Survivor区的比值。 -XX:MaxPermSize=n:设置持久代大小 收集器设置: -XX:+UseSerialGC:设置串行收集器 -XX:+UseParallelGC:设置并行收集器 -XX:+UseConcMarkSweepGC:设置并发收集器 回收统计信息: -XX:+PrintGC -XX:+PrintGCDetails -Xloggc:filename Tocmat 优化,确认有几个 JVM 虚拟机: set JAVA_OPTS= -Xms4g -Xmx4g -Xss512k -XX:+AggressiveOpts 进攻型的优化选项,所有优化项都加上 -XX:+UseBiasedLocking 优化锁,基本都要选上,偏执锁 -XX:permSize=64m 原始区大小,最大300m 类多就设置大一点 -XX:MaxPermSize=300m -XX:+DisableExplicitGC //System.gc() 不显示调用gc -XX:+UseConcMarkSweepGC 使用cms缩短相应时间,并发收集,低停顿 -XX:+UseParNewGC 并行收集新生代的垃圾 -XX:+CMSParallelRemarkEnabled 在使用UseParNewGC的情况下,尽量减少mark的时间 -XX:+UseCMSCompactAtFullCollection 使用并发收集器时,开启对年老代的压缩,使碎片减少 -XX:LargePageSizelnBytes=128m 内存分页大小对性能的提升 -XX:+UseFastAccessorMethods get/set方法转成本地代码 -Djava awt headless=true 修复linux下tomcat处理图标时可能产生的bug 内存调优: "C:Program FilesJavajdk1.8.0_31injava" -XX:+DoEscapeAnalysis -XX:+EliminateAllocations -XX:+UseTLAB -XX:+PrintGCDetails -Didea.launcher.port=7540 "-Didea.launcher.bin.path=E:javaIntelliJ IDEA 2016.3in" -Dfile.encoding=UTF-8 -classpath "C:Program FilesJavajdk1.8.0_31jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_31jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_31jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_31jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_31jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_31jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_31jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_31jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_31jrelibext ashorn.jar;C:Program FilesJavajdk1.8.0_31jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_31jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_31jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_31jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_31jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_31jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_31jrelibjce.jar;C:Program FilesJavajdk1.8.0_31jrelibjfr.jar;C:Program FilesJavajdk1.8.0_31jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_31jrelibjsse.jar;C:Program FilesJavajdk1.8.0_31jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_31jrelibplugin.jar;C:Program FilesJavajdk1.8.0_31jrelib esources.jar;C:Program FilesJavajdk1.8.0_31jrelib t.jar;E:java ewoutproduction ew;E:javaIntelliJ IDEA 2016.3libidea_rt.jar" com.intellij.rt.execution.application.AppMain aa.T02 Heap PSYoungGen total 38400K, used 3994K [0x00000000d5d80000, 0x00000000d8800000, 0x0000000100000000) eden space 33280K, 12% used [0x00000000d5d80000,0x00000000d61668b8,0x00000000d7e00000) from space 5120K, 0% used [0x00000000d8300000,0x00000000d8300000,0x00000000d8800000) to space 5120K, 0% used [0x00000000d7e00000,0x00000000d7e00000,0x00000000d8300000) ParOldGen total 87552K, used 0K [0x0000000081800000, 0x0000000086d80000, 0x00000000d5d80000) object space 87552K, 0% used [0x0000000081800000,0x0000000081800000,0x0000000086d80000) Metaspace used 3072K, capacity 4494K, committed 4864K, reserved 1056768K class space used 329K, capacity 386K, committed 512K, reserved 1048576K Heap PSYoungGen total 38400K, used 1147K [0x00000000d5d80000, 0x00000000d8800000, 0x0000000100000000) eden space 33280K, 3% used [0x00000000d5d80000,0x00000000d5e9ecb8,0x00000000d7e00000) from space 5120K, 0% used [0x00000000d8300000,0x00000000d8300000,0x00000000d8800000) to space 5120K, 0% used [0x00000000d7e00000,0x00000000d7e00000,0x00000000d8300000) ParOldGen total 87552K, used 0K [0x0000000081800000, 0x0000000086d80000, 0x00000000d5d80000) object space 87552K, 0% used [0x0000000081800000,0x0000000081800000,0x0000000086d80000) Metaspace used 3072K, capacity 4494K, committed 4864K, reserved 1056768K class space used 330K, capacity 386K, committed 512K, reserved 1048576K 线程本地缓存使用eden的,开启就会使用更多 Tomcat 前任何参数没参加大概每秒 605,调优后大概每秒 435,接近 3 倍的结果。