c++ Linux服务器优化

一 linux服务器性能查看1.1 cpu性能查看1、查看物理cpu个数:cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l2、查看每个物理cpu中的core个数:cat /proc/cpuinfo |grep "cpu cores"|wc -l3、逻辑cpu的个数:cat /proc/cpuinfo |grep "processor"|wc -l物理cpu个数*核数=逻辑cpu个数(不支持超线程技术的情况下)
1.2 内存查看1、查看内存使用情况:#free -m total used free shared buffers cachedMem: 3949 2519 1430 0 189 1619-/+ buffers/cache: 710 3239Swap: 3576 0 3576total:内存总数used:已经使用的内存数free:空闲内存数shared:多个进程共享的内存总额- buffers/cache:(已用)的内存数,即used-buffers-cached+ buffers/cache:(可用)的内存数,即free+buffers+cachedBuffer Cache用于针对磁盘块的读写;Page Cache用于针对文件inode的读写,这些Cache能有效地缩短I/O系统调用的时间 。对操作系统来说free/used是系统可用/占用的内存;对应用程序来说-/+ buffers/cache是可用/占用内存,因为buffers/cache很快就会被使用 。我们工作时候应该从应用角度来看 。
1.3 硬盘查看1、查看硬盘及分区信息:fdisk -l2、查看文件系统的磁盘空间占用情况:df -h3、查看硬盘的I/O性能(每隔一秒显示一次,显示5次):IOStat -x 1 5iostat是含在套装systat中的,可以用yum -y install systat来安装 。
常关注的参数:
如%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈 。如idle小于70%,I/O的压力就比较大了,说明读取进程中有较多的wait 。4、查看linux系统中某目录的大小:du -sh /root如发现某个分区空间接近用完,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录,然后按照从大到小的顺序,找出系统中占用最多空间的前10个文件或目录:
du -cksh *|sort -rn|head -n 101.4 查看平均负载有时候系统响应很慢,但又找不到原因,这时就要查看平均负载了,看它是否有大量的进程在排队等待 。
最简单的命令:
uptime--查看过去的1分钟、5分钟和15分钟内进程队列中的平均进程数量 。还有动态命令top
我们只关心以下部分:
top - 21:33:09 up 1:00, 1 user, load average: 0.00, 0.01, 0.05如果每个逻辑cpu当前的活动进程不大于3,则系统性能良好;如果每个逻辑cpu当前的活动进程不大于4,表示可以接受;如果每个逻辑cpu当前的活动进程大于5,则系统性能问题严重 。一般计算方法:负载值/逻辑cpu个数
还可以结合vmstat命令来判断系统是否繁忙,其中:
procsr:等待运行的进程数 。b:处在非中断睡眠状态的进程数 。w:被交换出去的可运行的进程数 。memeoryswpd:虚拟内存使用情况,单位为KB 。free:空闲的内存,单位为KB 。buff:被用来作为缓存的内存数,单位为KB 。swapsi:从磁盘交换到内存的交换页数量,单位为KB 。so:从内存交换到磁盘的交换页数量,单位为KB 。iobi:发送到块设备的块数,单位为KB 。bo:从块设备接受的块数,单位为KB 。systemin:每秒的中断数,包括时钟中断 。cs:每秒的环境切换次数 。cpu按cpu的总使用百分比来显示 。us:cpu使用时间 。sy:cpu系统使用时间 。id:闲置时间 。1.5 其他参数查看内核版本号:uname -a简化命令:uname -r查看系统是32位还是64位的:file /sbin/init查看发行版:cat /etc/issue或lsb_release -a查看系统已载入的相关模块:lsmod查看pci设置:lspci二 Linux服务器性能评估2.1.1 影响Linux服务器性能的因素1. 操作系统级CPU内存磁盘I/O带宽网络I/O带宽2. 程序应用级2.1.2 系统性能评估标准影响性能因素 好 坏 糟糕 CPU user% + sys%< 70% user% + sys%= 85% user% + sys% >=90% 内存 Swap In(si)=0 Swap Out(so)=0 Per CPU with 10 page/s More Swap In & Swap Out 磁盘 iowait % < 20% iowait % =35% iowait % >= 50%
其中:
%user:表示CPU处在用户模式下的时间百分比 。%sys:表示CPU处在系统模式下的时间百分比 。%iowait:表示CPU等待输入输出完成时间的百分比 。swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAMswap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK2.1.3 系统性能分析工具1.常用系统命令Vmstat、sar、iostat、netstat、free、ps、top等
2.常用组合方式vmstat、sar、iostat检测是否是CPU瓶颈free、vmstat检测是否是内存瓶颈iostat检测是否是磁盘I/O瓶颈netstat检测是否是网络带宽瓶颈2.1.4 Linux性能评估与优化系统整体性能评估(uptime命令)
uptime

16:38:00 up 118 days, 3:01, 5 users,load average: 1.22, 1.02, 0.91


推荐阅读