海棠蚀 發表於 2022-10-12 16:05:00

linux服务器硬件及性能查看

<p><strong><span style="font-family: 微软雅黑">一</span> linux服务器性能查看</strong></p>
<p><strong>1.1 cpu</strong><strong>配置</strong><strong>查看</strong></p>
<p><strong>1、查看物理cpu个数:</strong></p>
<p>cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l</p>
<p><strong>2、查看每个物理cpu中的core个数:</strong></p>
<p>cat /proc/cpuinfo |grep "cpu cores"|wc -l</p>
<p><strong>3、逻辑cpu的个数:</strong></p>
<p>cat /proc/cpuinfo |grep "processor"|wc -l</p>
<p><span style="font-family: 宋体">物理</span>cpu<span style="font-family: 宋体">个数</span><span style="font-family: Calibri">*</span><span style="font-family: 宋体">核数</span><span style="font-family: Calibri">=</span><span style="font-family: 宋体">逻辑</span><span style="font-family: Calibri">cpu</span><span style="font-family: 宋体">个数(不支持超线程技术的情况下)</span></p>
<p><strong>1.2 内存查看</strong></p>
<p><strong>1、查看内存使用情况:</strong></p>
<p>#free -m</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;used &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free &nbsp;&nbsp;&nbsp;&nbsp;shared &nbsp;&nbsp;&nbsp;buffers &nbsp;&nbsp;&nbsp;&nbsp;cached</p>
<p>Mem: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3949 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2519 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1430 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;189 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1619</p>
<p>-/+ buffers/cache: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;710 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3239</p>
<p>Swap: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3576 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3576</p>
<p>&nbsp;</p>
<p>total<span style="font-family: 宋体">:内存总数</span></p>
<p>used<span style="font-family: 宋体">:已经使用的内存数</span></p>
<p>free<span style="font-family: 宋体">:空闲内存数</span></p>
<p>shared<span style="font-family: 宋体">:多个进程共享的内存总额</span></p>
<p>- buffers/cache<span style="font-family: 宋体">:</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">已用</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">的内存数,即</span><span style="font-family: Calibri">used-buffers-cached</span></p>
<p>+ buffers/cache<span style="font-family: 宋体">:</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">可用</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">的内存数,即</span><span style="font-family: Calibri">free+buffers+cached</span></p>
<p>&nbsp;</p>
<p>Buffer Cache<span style="font-family: 宋体">用于针对磁盘块的读写;</span></p>
<p>Page Cache<span style="font-family: 宋体">用于针对文件</span><span style="font-family: Calibri">inode</span><span style="font-family: 宋体">的读写,这些</span><span style="font-family: Calibri">Cache</span><span style="font-family: 宋体">能有效地缩短</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">系统调用的时间。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">对操作系统来说</span>free/used<span style="font-family: 宋体">是系统可用</span><span style="font-family: Calibri">/</span><span style="font-family: 宋体">占用的内存;</span></p>
<p><span style="font-family: 宋体">对应用程序来说</span>-/+ buffers/cache<span style="font-family: 宋体">是可用</span><span style="font-family: Calibri">/</span><span style="font-family: 宋体">占用内存</span><span style="font-family: Calibri">,</span><span style="font-family: 宋体">因为</span><span style="font-family: Calibri">buffers/cache</span><span style="font-family: 宋体">很快就会被使用。</span></p>
<p><span style="font-family: 宋体">我们工作时候应该从应用角度来看。</span></p>
<p><strong>1.3 硬盘查看</strong></p>
<p><strong>1、查看硬盘及分区信息:</strong></p>
<p>fdisk -l</p>
<p><strong>2、查看文件系统的磁盘空间占用情况:</strong></p>
<p>df -h</p>
<p><strong>3、查看硬盘的I/O性能(每隔一秒显示一次,显示5次):</strong></p>
<p>iostat -x 1 5</p>
<p>iostat<span style="font-family: 宋体">是含在套装</span><span style="font-family: Calibri">systat</span><span style="font-family: 宋体">中的</span><span style="font-family: Calibri">,</span><span style="font-family: 宋体">可以用</span><span style="font-family: Calibri">yum -y install systat</span><span style="font-family: 宋体">来安装。</span></p>
<p><span style="font-family: 宋体">常关注的参数:</span></p>
<p><span style="font-family: 宋体">如</span>%util<span style="font-family: 宋体">接近</span><span style="font-family: Calibri">100%,</span><span style="font-family: 宋体">说明产生的</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">请求太多,</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">系统已经满负荷,该磁盘可能存在瓶颈。</span></p>
<p><span style="font-family: 宋体">如</span>idle<span style="font-family: 宋体">小于</span><span style="font-family: Calibri">70%</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">的压力就比较大了,说明读取进程中有较多的</span><span style="font-family: Calibri">wait</span><span style="font-family: 宋体">。</span></p>
<p><strong>4、查看linux系统中某目录的大小:</strong></p>
<p>du -sh /root</p>
<p><span style="font-family: 宋体">如发现某个分区空间接近用完,可以进入该分区的挂载点,用以下命令找出</span><strong><span style="font-family: 宋体">占用空间最多的文件或目录</span></strong><span style="font-family: 宋体">,然后按照从大到小的顺序,找出系统中占用最多空间的前</span>10<span style="font-family: 宋体">个文件或目录:</span></p>
<p>du -cksh *|sort -rn|head -n 10</p>
<p><strong>1.4 查看平均负载</strong></p>
<p><span style="font-family: 宋体">有时候系统响应很慢,但又找不到原因,这时就要查看平均负载了,看它是否有大量的进程在排队等待。</span></p>
<p><span style="font-family: 宋体">最简单的命令:</span></p>
<p>uptime--<span style="font-family: 宋体">查看过去的</span><span style="font-family: Calibri">1</span><span style="font-family: 宋体">分钟、</span><span style="font-family: Calibri">5</span><span style="font-family: 宋体">分钟和</span><span style="font-family: Calibri">15</span><span style="font-family: 宋体">分钟内进程队列中的平均进程数量。</span></p>
<p><span style="font-family: 宋体">还有动态命令</span>top<span style="font-family: 宋体">我们只关心以下部分:</span></p>
<p>top - 21:33:09 up &nbsp;1:00, &nbsp;1 user, &nbsp;load average: 0.00, 0.01, 0.05</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">如果每个逻辑</span>cpu<span style="font-family: 宋体">当前的活动进程不大于</span><span style="font-family: Calibri">3</span><span style="font-family: 宋体">,则系统性能良好;</span></p>
<p><span style="font-family: 宋体">如果每个逻辑</span>cpu<span style="font-family: 宋体">当前的活动进程不大于</span><span style="font-family: Calibri">4</span><span style="font-family: 宋体">,表示可以接受;</span></p>
<p><span style="font-family: 宋体">如果每个逻辑</span>cpu<span style="font-family: 宋体">当前的活动进程大于</span><span style="font-family: Calibri">5</span><span style="font-family: 宋体">,则系统性能问题严重。</span></p>
<p><span style="font-family: 宋体">一般计算方法:负载值</span>/<span style="font-family: 宋体">逻辑</span><span style="font-family: Calibri">cpu</span><span style="font-family: 宋体">个数</span></p>
<p><span style="font-family: 宋体">还可以结合</span>vmstat<span style="font-family: 宋体">命令来判断系统是否繁忙,其中:</span></p>
<p>procs</p>
<p>r<span style="font-family: 宋体">:等待运行的进程数。</span></p>
<p>b<span style="font-family: 宋体">:处在非中断睡眠状态的进程数。</span></p>
<p>w<span style="font-family: 宋体">:被交换出去的可运行的进程数。</span></p>
<p>&nbsp;</p>
<p>memeory</p>
<p>swpd<span style="font-family: 宋体">:虚拟内存使用情况,单位为</span><span style="font-family: Calibri">KB</span><span style="font-family: 宋体">。</span></p>
<p>free<span style="font-family: 宋体">:空闲的内存,单位为</span><span style="font-family: Calibri">KB</span><span style="font-family: 宋体">。</span></p>
<p>buff<span style="font-family: 宋体">:被用来作为缓存的内存数,单位为</span><span style="font-family: Calibri">KB</span><span style="font-family: 宋体">。</span></p>
<p>&nbsp;</p>
<p>swap</p>
<p>si<span style="font-family: 宋体">:从磁盘交换到内存的交换页数量,单位为</span><span style="font-family: Calibri">KB</span><span style="font-family: 宋体">。</span></p>
<p>so<span style="font-family: 宋体">:从内存交换到磁盘的交换页数量,单位为</span><span style="font-family: Calibri">KB</span><span style="font-family: 宋体">。</span></p>
<p>&nbsp;</p>
<p>io</p>
<p>bi<span style="font-family: 宋体">:发送到块设备的块数,单位为</span><span style="font-family: Calibri">KB</span><span style="font-family: 宋体">。</span></p>
<p>bo<span style="font-family: 宋体">:从块设备接受的块数,单位为</span><span style="font-family: Calibri">KB</span><span style="font-family: 宋体">。</span></p>
<p>&nbsp;</p>
<p>system</p>
<p>in<span style="font-family: 宋体">:每秒的中断数,包括时钟中断。</span></p>
<p>cs<span style="font-family: 宋体">:每秒的环境切换次数。</span></p>
<p>&nbsp;</p>
<p>cpu</p>
<p><span style="font-family: 宋体">按</span>cpu<span style="font-family: 宋体">的总使用百分比来显示。</span></p>
<p>us<span style="font-family: 宋体">:</span><span style="font-family: Calibri">cpu</span><span style="font-family: 宋体">使用时间。</span></p>
<p>sy<span style="font-family: 宋体">:</span><span style="font-family: Calibri">cpu</span><span style="font-family: 宋体">系统使用时间。</span></p>
<p>id<span style="font-family: 宋体">:闲置时间。</span></p>
<p><strong>1.5 其他参数</strong></p>
<p><span style="font-family: 宋体">查看内核版本号:</span></p>
<p>uname -a</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">简化命令:</span>uname -r</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">查看系统是</span>32<span style="font-family: 宋体">位还是</span><span style="font-family: Calibri">64</span><span style="font-family: 宋体">位的:</span></p>
<p>file /sbin/init</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">查看发行版:</span></p>
<p>cat /etc/issue</p>
<p><span style="font-family: 宋体">或</span>lsb_release -a</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">查看系统已载入的相关模块:</span></p>
<p>lsmod</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">查看</span>pci<span style="font-family: 宋体">设置:</span></p>
<p>lspci</p>
<p><strong><span style="font-family: 微软雅黑">二</span> Linux服务器性能评估</strong></p>
<p><strong>2.1.1 影响Linux服务器性能的因素</strong></p>
<p><strong>1. 操作系统级</strong></p>
<p>CPU</p>
<p><span style="font-family: 宋体">内存</span></p>
<p><span style="font-family: 宋体">磁盘</span>I/O<span style="font-family: 宋体">带宽</span></p>
<p><span style="font-family: 宋体">网络</span>I/O<span style="font-family: 宋体">带宽</span></p>
<p><strong>2. 程序应用级</strong></p>
<p><strong>2.1.2 系统性能评估标准</strong></p>
<table border="0" cellspacing="0">
<tbody>
<tr>
<td valign="center" width="206">
<p>&nbsp;</p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: 宋体">其中:</span></p>
<p>%user<span style="font-family: 宋体">:表示</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">处在用户模式下的时间百分比。</span></p>
<p>%sys<span style="font-family: 宋体">:表示</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">处在系统模式下的时间百分比。</span></p>
<p>%iowait<span style="font-family: 宋体">:表示</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">等待输入输出完成时间的百分比。</span></p>
<p>swap in<span style="font-family: 宋体">:即</span><span style="font-family: Calibri">si</span><span style="font-family: 宋体">,表示虚拟内存的页导入,即从</span><span style="font-family: Calibri">SWAP DISK</span><span style="font-family: 宋体">交换到</span><span style="font-family: Calibri">RAM</span></p>
<p>swap out<span style="font-family: 宋体">:即</span><span style="font-family: Calibri">so</span><span style="font-family: 宋体">,表示虚拟内存的页导出,即从</span><span style="font-family: Calibri">RAM</span><span style="font-family: 宋体">交换到</span><span style="font-family: Calibri">SWAP DISK</span></p>
<p><strong>2.1.3 系统性能分析工具</strong></p>
<p><strong>1.常用系统命令</strong></p>
<p>Vmstat<span style="font-family: 宋体">、</span><span style="font-family: Calibri">sar</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">iostat</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">netstat</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">free</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">ps</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">top</span><span style="font-family: 宋体">等</span></p>
<p><strong>2.常用组合方式</strong></p>
<p>vmstat<span style="font-family: 宋体">、</span><span style="font-family: Calibri">sar</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">iostat</span><span style="font-family: 宋体">检测是否是</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">瓶颈</span></p>
<p>free<span style="font-family: 宋体">、</span><span style="font-family: Calibri">vmstat</span><span style="font-family: 宋体">检测是否是内存瓶颈</span></p>
<p>iostat<span style="font-family: 宋体">检测是否是磁盘</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">瓶颈</span></p>
<p>netstat<span style="font-family: 宋体">检测是否是网络带宽瓶颈</span></p>
<p><strong>2.1.4 Linux性能评估与优化</strong></p>
<p><span style="font-family: 宋体">系统整体性能评估(</span>uptime<span style="font-family: 宋体">命令)</span>uptime</p>
<p>16:38:00 up 118 days, 3:01, 5 users,load average: 1.22, 1.02, 0.91</p>
<p><span style="font-family: 宋体">注意:</span></p>
<p>&nbsp;load average<span style="font-family: 宋体">三值大小一般不能大于系统</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">的个数。</span></p>
<p><span style="font-family: 宋体">系统有</span>8<span style="font-family: 宋体">个</span><span style="font-family: Calibri">CPU,</span><span style="font-family: 宋体">如</span><span style="font-family: Calibri">load average</span><span style="font-family: 宋体">三值长期大于</span><span style="font-family: Calibri">8</span><span style="font-family: 宋体">,说明</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">很繁忙,负载很高,可能会影响系统性能。</span></p>
<p>&nbsp;<span style="font-family: 宋体">但偶尔大于</span>8<span style="font-family: 宋体">,一般不会影响系统性能。</span></p>
<p>&nbsp;<span style="font-family: 宋体">如</span>load average<span style="font-family: 宋体">输出值小于</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">个数,则表示</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">有空闲时间片,比如本例中的输出,</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">是非常空闲的</span></p>
<p><strong>2.2.1 CPU性能评估</strong></p>
<p><strong>1.利用vmstat命令监控系统CPU</strong></p>
<p><span style="font-family: 宋体">显示系统各种资源之间相关性能简要信息,主要看</span>CPU<span style="font-family: 宋体">负载情况。</span></p>
<p><span style="font-family: 宋体">下面是</span>vmstat<span style="font-family: 宋体">命令在某个系统的输出结果:</span></p>
<p>#vmstat 2 3</p>
<p>&nbsp;</p>
<p>procs</p>
<p>&nbsp;<span style="font-family: Calibri">———–memory———- —swap– —–io—- –system– —–cpu——</span></p>
<p>&nbsp;</p>
<p>r &nbsp;b swpd freebuff &nbsp;cache si so bi bo incs us sy idwa st</p>
<p>&nbsp;</p>
<p>0 &nbsp;0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0</p>
<p>&nbsp;</p>
<p>0 &nbsp;0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0</p>
<p>&nbsp;</p>
<p>0 &nbsp;0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0</p>
<p>Procs</p>
<p>r--<span style="font-family: 宋体">运行和等待</span><span style="font-family: Calibri">cpu</span><span style="font-family: 宋体">时间片的进程数,这个值如果长期大于系统</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">的个数,说明</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">不足,需要增加</span><span style="font-family: Calibri">CPU</span></p>
<p>b--<span style="font-family: 宋体">在等待资源的进程数,比如正在等待</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">、或者内存交换等。</span></p>
<p><strong>CPU</strong></p>
<p>us</p>
<p><span style="font-family: 宋体">用户进程消耗的</span>CPU <span style="font-family: 宋体">时间百分比。</span><span style="font-family: Calibri">us</span><span style="font-family: 宋体">的值比较高时,说明用户进程消耗的</span><span style="font-family: Calibri">cpu</span><span style="font-family: 宋体">时间多,但是如果长期大于</span><span style="font-family: Calibri">50%</span><span style="font-family: 宋体">,就需要考虑优化程序或算法。</span></p>
<p>sy</p>
<p><span style="font-family: 宋体">内核进程消耗的</span>CPU<span style="font-family: 宋体">时间百分比。</span><span style="font-family: Calibri">Sy</span><span style="font-family: 宋体">的值较高时,说明内核消耗的</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">资源很多。</span></p>
<p><span style="font-family: 宋体">根据经验,</span>us+sy<span style="font-family: 宋体">的参考值为</span><span style="font-family: Calibri">80%</span><span style="font-family: 宋体">,如果</span><span style="font-family: Calibri">us+sy</span><span style="font-family: 宋体">大于 </span><span style="font-family: Calibri">80%</span><span style="font-family: 宋体">说明可能存在</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">资源不足。</span></p>
<p><strong>2.利用sar命令监控系统CPU</strong></p>
<p>sar<span style="font-family: 宋体">对系统每方面进行单独统计,但会增加系统开销,不过开销可以评估,对系统的统计结果不会有很大影响。</span></p>
<p><span style="font-family: 宋体">下面是</span>sar<span style="font-family: 宋体">命令对某个系统的</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">统计输出:</span></p>
<p># sar -u 3 5</p>
<p>&nbsp;</p>
<p>Linux</p>
<p>&nbsp;2.6.9-42.ELsmp (webserver) 11/28/2008_i686_</p>
<p>&nbsp;(8 CPU)</p>
<p>&nbsp;</p>
<p>11:41:24</p>
<p>&nbsp;AM CPU %user %nice%system</p>
<p>&nbsp;%iowait %steal %idle</p>
<p>&nbsp;</p>
<p>11:41:27</p>
<p>&nbsp;AM all 0.88 0.00 0.29 0.00 0.00 98.83</p>
<p>&nbsp;</p>
<p>11:41:30</p>
<p>&nbsp;AM all 0.13 0.00 0.17 0.21 0.00 99.50</p>
<p>&nbsp;</p>
<p>11:41:33</p>
<p>&nbsp;AM all 0.04 0.00 0.04 0.00 0.00 99.92</p>
<p>&nbsp;</p>
<p>11:41:36</p>
<p>&nbsp;AM all 90.08 0.00 0.13 0.16 0.00 9.63</p>
<p>&nbsp;</p>
<p>11:41:39</p>
<p>&nbsp;AM all 0.38 0.00 0.17 0.04 0.00 99.41</p>
<p>&nbsp;</p>
<p>Average:</p>
<p>&nbsp;all 0.34 0.00 0.16 0.05 0.00 99.45</p>
<p><span style="font-family: 宋体">输出解释如下:</span></p>
<p>%user<span style="font-family: 宋体">列显示了用户进程消耗的</span><span style="font-family: Calibri">CPU </span><span style="font-family: 宋体">时间百分比。</span></p>
<p>%nice<span style="font-family: 宋体">列显示了运行正常进程所消耗的</span><span style="font-family: Calibri">CPU </span><span style="font-family: 宋体">时间百分比。</span></p>
<p>%system<span style="font-family: 宋体">列显示了系统进程消耗的</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">时间百分比。</span></p>
<p>%iowait<span style="font-family: 宋体">列显示了</span><span style="font-family: Calibri">IO</span><span style="font-family: 宋体">等待所占用的</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">时间百分比</span></p>
<p>%steal<span style="font-family: 宋体">列显示了在内存相对紧张的环境下</span><span style="font-family: Calibri">pagein</span><span style="font-family: 宋体">强制对不同的页面进行的</span><span style="font-family: Calibri">steal</span><span style="font-family: 宋体">操作 。</span></p>
<p>%idle<span style="font-family: 宋体">列显示了</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">处在空闲状态的时间百分比。</span></p>
<p><span style="font-family: 宋体">问题</span></p>
<p><span style="font-family: 宋体">你是否遇到过系统</span>CPU<span style="font-family: 宋体">整体利用率不高,而应用缓慢的现象?</span></p>
<p><span style="font-family: 宋体">在一个多</span>CPU<span style="font-family: 宋体">的系统中,如果程序使用了单线程,会出现这么一个现象,</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">,导致这个</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">占用率为</span><span style="font-family: Calibri">100%</span><span style="font-family: 宋体">,无法处理其它请求,而其它的</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">却闲置,这就导致了整体</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">使用率不高,而应用缓慢现象的发生。</span></p>
<p><strong>2.3.1 内存性能评估</strong></p>
<p><strong>1.利用free指令监控内存</strong></p>
<p>free<span style="font-family: 宋体">是监控</span><span style="font-family: Calibri">Linux</span><span style="font-family: 宋体">内存使用状况最常用的指令,看下面的一个输出:</span></p>
<p># free -m</p>
<p>&nbsp;</p>
<p>total</p>
<p>&nbsp;used freeshared</p>
<p>&nbsp;buffers cached</p>
<p>&nbsp;</p>
<p>Mem:</p>
<p>&nbsp;8111 7185 926 0 243 6299</p>
<p>&nbsp;</p>
<p>&nbsp;-/+</p>
<p>&nbsp;buffers/cache:</p>
<p>&nbsp;643 7468</p>
<p>&nbsp;</p>
<p>Swap:</p>
<p>&nbsp;8189 0 8189</p>
<p><span style="font-family: 宋体">经验公式:</span></p>
<p><span style="font-family: 宋体">应用程序可用内存</span>/<span style="font-family: 宋体">系统物理内存</span><span style="font-family: Calibri">&gt;70%</span><span style="font-family: 宋体">,表示系统内存资源非常充足,不影响系统性能</span><span style="font-family: Calibri">;</span></p>
<p><span style="font-family: 宋体">应用程序可用内存</span>/<span style="font-family: 宋体">系统物理内存</span><span style="font-family: Calibri">&lt;20%</span><span style="font-family: 宋体">,表示系统内存资源紧缺,需要增加系统内存</span><span style="font-family: Calibri">;</span></p>
<p>20%&lt;<span style="font-family: 宋体">应用程序可用内存</span><span style="font-family: Calibri">/</span><span style="font-family: 宋体">系统物理内存</span><span style="font-family: Calibri">&lt;70%</span><span style="font-family: 宋体">,表示系统内存资源基本能满足应用需求,暂时不影响系统性能</span></p>
<p><strong>2.利用vmstat命令监控内存</strong></p>
<p>[root@node1</p>
<p>&nbsp;~]#</p>
<p>&nbsp;vmstat 2 3</p>
<p>&nbsp;</p>
<p>procs</p>
<p>&nbsp;<span style="font-family: Calibri">———–memory———- —swap– —–io—- –system– —–cpu——</span></p>
<p>&nbsp;</p>
<p>r b swpd freebuff cache si so bi bo incs us sy idwa st</p>
<p>&nbsp;</p>
<p>0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0</p>
<p>&nbsp;</p>
<p>0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0</p>
<p>&nbsp;</p>
<p>0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0</p>
<p>memory</p>
<p>swpd--<span style="font-family: 宋体">切换到内存交换区的内存数量(</span><span style="font-family: Calibri">k</span><span style="font-family: 宋体">为单位</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">。如</span><span style="font-family: Calibri">swpd</span><span style="font-family: 宋体">值偶尔非</span><span style="font-family: Calibri">0</span><span style="font-family: 宋体">,不影响系统性能</span></p>
<p>free--<span style="font-family: 宋体">当前空闲的物理内存数量(</span><span style="font-family: Calibri">k</span><span style="font-family: 宋体">为单位)</span></p>
<p>buff--buffers cache<span style="font-family: 宋体">的内存数量,一般对块设备的读写才需要缓冲</span></p>
<p>cache--page cached<span style="font-family: 宋体">的内存数量</span></p>
<p><span style="font-family: 宋体">一般作为文件系统</span>cached<span style="font-family: 宋体">,频繁访问的文件都会被</span><span style="font-family: Calibri">cached</span><span style="font-family: 宋体">,如</span><span style="font-family: Calibri">cache</span><span style="font-family: 宋体">值较大,说明</span><span style="font-family: Calibri">cached</span><span style="font-family: 宋体">的文件数较多,如果此时</span><span style="font-family: Calibri">IO</span><span style="font-family: 宋体">中</span><span style="font-family: Calibri">bi</span><span style="font-family: 宋体">比较小,说明文件系统效率比较好。</span></p>
<p>swap</p>
<p>si--<span style="font-family: 宋体">由磁盘调入内存,也就是内存进入内存交换区的数量。</span></p>
<p>so--<span style="font-family: 宋体">由内存调入磁盘,也就是内存交换区进入内存的数量。</span></p>
<p>si<span style="font-family: 宋体">、</span><span style="font-family: Calibri">so</span><span style="font-family: 宋体">的值长期不为</span><span style="font-family: Calibri">0</span><span style="font-family: 宋体">,表示系统内存不足。需增加系统内存。</span></p>
<p><strong>2.4.1磁盘I/O性能评估</strong></p>
<p><strong>1.磁盘存储基础</strong></p>
<p><span style="font-family: 宋体">频繁访问的文件或数据尽可能用</span><strong><span style="font-family: 宋体">内存读写</span></strong><span style="font-family: 宋体">代替</span><strong><span style="font-family: 宋体">直接磁盘</span>I/O</strong><span style="font-family: 宋体">,效率高千倍。</span></p>
<p><span style="font-family: 宋体">将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。</span></p>
<p><span style="font-family: 宋体">对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。</span></p>
<p><span style="font-family: 宋体">裸设备优点:</span></p>
<p><span style="font-family: 宋体">数据可直接读写,不需经过操作系统级缓存,节省内存资源,避免内存资源争用</span>;</p>
<p><span style="font-family: 宋体">避免文件系统级维护开销,如文件系统需维护超级块、</span>I-node<span style="font-family: 宋体">等</span><span style="font-family: Calibri">;</span></p>
<p><span style="font-family: 宋体">避免了操作系统</span>cache<span style="font-family: 宋体">预读功能,减少了</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">请求</span></p>
<p><span style="font-family: 宋体">使用裸设备的缺点是:</span></p>
<p><span style="font-family: 宋体">数据管理、空间管理不灵活,需要很专业的人来操作。</span></p>
<p><strong>2.利用iostat评估磁盘性能</strong></p>
<p># iostat -d 2 3</p>
<p>&nbsp;</p>
<p>Linux</p>
<p>&nbsp;2.6.9-42.ELsmp (webserver) 12/01/2008_i686_</p>
<p>&nbsp;(8 CPU)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Device:</p>
<p>&nbsp;tps Blk_read/sBlk_wrtn/sBlk_read</p>
<p>&nbsp;Blk_wrtn</p>
<p>&nbsp;</p>
<p>sda 1.87 2.58 114.12 6479462 286537372</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Device:</p>
<p>&nbsp;tps Blk_read/sBlk_wrtn/sBlk_read</p>
<p>&nbsp;Blk_wrtn</p>
<p>&nbsp;</p>
<p>sda</p>
<p>&nbsp;0.00 0.00 0.00 0 0</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Device:</p>
<p>&nbsp;tps Blk_read/sBlk_wrtn/sBlk_read</p>
<p>&nbsp;Blk_wrtn</p>
<p>&nbsp;</p>
<p>sda</p>
<p>&nbsp;1.00 0.00 12.00 0 24</p>
<p><span style="font-family: 宋体">解释如下:</span></p>
<p>Blk_read/s--<span style="font-family: 宋体">每秒读取数据块数</span></p>
<p>Blk_wrtn/s--<span style="font-family: 宋体">每秒写入数据块数</span></p>
<p>Blk_read--<span style="font-family: 宋体">读取的所有块数</span></p>
<p>Blk_wrtn--<span style="font-family: 宋体">写入的所有块数</span></p>
<p><span style="font-family: 宋体">可通过</span>Blk_read/s<span style="font-family: 宋体">和</span><span style="font-family: Calibri">Blk_wrtn/s</span><span style="font-family: 宋体">值对磁盘的读写性能有一个基本的了解</span><span style="font-family: Calibri">.</span><span style="font-family: 宋体">如</span><span style="font-family: Calibri">Blk_wrtn/s</span><span style="font-family: 宋体">值很大,表示磁盘写操作频繁,考虑优化磁盘或程序,如</span><span style="font-family: Calibri">Blk_read/s</span><span style="font-family: 宋体">值很大,表示磁盘直接读操作很多,可将读取的数据放入内存</span></p>
<p><span style="font-family: 宋体">规则遵循:</span></p>
<p><span style="font-family: 宋体">长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。</span></p>
<p><strong>3.利用sar评估磁盘性能</strong></p>
<p><span style="font-family: 宋体">通过</span><span style="font-family: Calibri">“sar –d”</span><span style="font-family: 宋体">组合,可以对系统的磁盘</span><span style="font-family: Calibri">IO</span><span style="font-family: 宋体">做一个基本的统计,请看下面的一个输出:</span></p>
<p># sar -d 2 3</p>
<p>&nbsp;</p>
<p>Linux</p>
<p>&nbsp;2.6.9-42.ELsmp (webserver) 11/30/2008_i686_</p>
<p>&nbsp;(8 CPU)</p>
<p>&nbsp;</p>
<p>11:09:33</p>
<p>&nbsp;PM DEV tps rd_sec/swr_sec/savgrq-sz</p>
<p>&nbsp;avgqu-sz await svctm %util</p>
<p>&nbsp;</p>
<p>11:09:35</p>
<p>&nbsp;PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00</p>
<p>&nbsp;</p>
<p>11:09:35</p>
<p>&nbsp;PM DEV tps rd_sec/swr_sec/savgrq-sz</p>
<p>&nbsp;avgqu-sz await svctm %util</p>
<p>&nbsp;</p>
<p>11:09:37</p>
<p>&nbsp;PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00</p>
<p>&nbsp;</p>
<p>11:09:37</p>
<p>&nbsp;PM DEV tps rd_sec/swr_sec/savgrq-sz</p>
<p>&nbsp;avgqu-sz await svctm %util</p>
<p>&nbsp;</p>
<p>11:09:39</p>
<p>&nbsp;PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05</p>
<p>&nbsp;</p>
<p>Average:</p>
<p>&nbsp;DEV tps rd_sec/swr_sec/savgrq-sz</p>
<p>&nbsp;avgqu-sz await svctm %util</p>
<p>&nbsp;</p>
<p>Average:</p>
<p>&nbsp;dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02</p>
<p><span style="font-family: 宋体">参数含义:</span></p>
<p>await--<span style="font-family: 宋体">平均每次设备</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">操作等待时间(毫秒)</span></p>
<p>svctm--<span style="font-family: 宋体">平均每次设备</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">操作的服务时间(毫秒)</span></p>
<p>%util--<span style="font-family: 宋体">一秒中有百分之几的时间用于</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">操作</span></p>
<p><span style="font-family: 宋体">对磁盘</span>IO<span style="font-family: 宋体">性能评判标准:</span></p>
<p><span style="font-family: 宋体">正常</span>svctm<span style="font-family: 宋体">应小于</span><span style="font-family: Calibri">await</span><span style="font-family: 宋体">值,而</span><span style="font-family: Calibri">svctm</span><span style="font-family: 宋体">和磁盘性能有关,</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">、内存负荷也会对</span><span style="font-family: Calibri">svctm</span><span style="font-family: 宋体">值造成影响,过多的请求也会间接的导致</span><span style="font-family: Calibri">svctm</span><span style="font-family: 宋体">值的增加。</span></p>
<p>await<span style="font-family: 宋体">值取决</span><span style="font-family: Calibri">svctm</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">队列长度以及</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">请求模式,</span></p>
<p><span style="font-family: 宋体">如果</span>svctm<span style="font-family: 宋体">的值与</span><span style="font-family: Calibri">await</span><span style="font-family: 宋体">很接近,表示几乎没有</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">等待,磁盘性能很好,</span></p>
<p><span style="font-family: 宋体">如果</span>await<span style="font-family: 宋体">的值远高于</span><span style="font-family: Calibri">svctm</span><span style="font-family: 宋体">的值,则表示</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">队列等待太长,系统上运行的应用程序将变慢,</span></p>
<p><span style="font-family: 宋体">此时可以通过更换更快的硬盘来解决问题。</span></p>
<p>%util--<span style="font-family: 宋体">衡量磁盘</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">重要指标,</span></p>
<p><span style="font-family: 宋体">如</span>%util<span style="font-family: 宋体">接近</span><span style="font-family: Calibri">100%</span><span style="font-family: 宋体">,表示磁盘产生的</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">请求太多,</span><span style="font-family: Calibri">I/O</span><span style="font-family: 宋体">系统已经满负荷工作,该磁盘可能存在瓶颈。</span></p>
<p><span style="font-family: 宋体">可优化程序或者</span> <span style="font-family: 宋体">通过更换</span> <span style="font-family: 宋体">更高、更快的磁盘。</span></p>
<p><strong>2.5.1. 网络性能评估</strong></p>
<p><span style="font-family: 宋体">(</span>1<span style="font-family: 宋体">)通过</span><span style="font-family: Calibri">ping</span><span style="font-family: 宋体">命令检测网络的连通性</span></p>
<p><span style="font-family: 宋体">(</span>2<span style="font-family: 宋体">)通过</span><span style="font-family: Calibri">netstat –i</span><span style="font-family: 宋体">组合检测网络接口状况</span></p>
<p><span style="font-family: 宋体">(</span>3<span style="font-family: 宋体">)通过</span><span style="font-family: Calibri">netstat –r</span><span style="font-family: 宋体">组合检测系统的路由表信息</span></p>
<p><span style="font-family: 宋体">(</span>4<span style="font-family: 宋体">)通过</span><span style="font-family: Calibri">sar –n</span><span style="font-family: 宋体">组合显示系统的网络运行状态</span></p>
<p><strong><span style="font-family: 微软雅黑">三</span> Linux服务器性能调优</strong></p>
<p><strong>1.为磁盘I/O调整Linux内核电梯算法</strong></p>
<p><span style="font-family: 宋体">选择文件系统后,该算法可以平衡低延迟需求,收集足够数据,有效组织对磁盘读写请求。</span></p>
<p><strong>2.禁用不必要的守护进程,节省内存和CPU资源</strong></p>
<p><span style="font-family: 宋体">许多守护进程或服务通常非必需,消耗宝贵内存和</span>CPU<span style="font-family: 宋体">时间。将服务器置于险地。</span></p>
<p><span style="font-family: 宋体">禁用可加快启动时间,释放内存。</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">减少</span>CPU<span style="font-family: 宋体">要处理的进程数</span></p>
<p><span style="font-family: 宋体">一些应被禁用的</span>Linux<span style="font-family: 宋体">守护进程,默认自动运行:</span></p>
<p><span style="font-family: 宋体">序号</span> <span style="font-family: 宋体">守护进程</span> <span style="font-family: 宋体">描述</span>1 Apmd <span style="font-family: 宋体">高级电源管理守护进程</span><span style="font-family: Calibri">2 Nfslock </span><span style="font-family: 宋体">用于</span><span style="font-family: Calibri">NFS</span><span style="font-family: 宋体">文件锁定</span><span style="font-family: Calibri">3 Isdn ISDN Moderm</span><span style="font-family: 宋体">支持</span><span style="font-family: Calibri">4 Autofs </span><span style="font-family: 宋体">在后台自动挂载文件系统</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">如自动挂载</span><span style="font-family: Calibri">CD-ROM)5 Sendmail </span><span style="font-family: 宋体">邮件传输代理</span><span style="font-family: Calibri">6 Xfs X Window</span><span style="font-family: 宋体">的字体服务器</span></p>
<p><strong>3.关掉GUI</strong></p>
<p><strong>4、清理不需要的模块或功能</strong></p>
<p><span style="font-family: 宋体">服务器软件包中太多被启动的功能或模块实际上是不需要的</span>(<span style="font-family: 宋体">如</span><span style="font-family: Calibri">Apache</span><span style="font-family: 宋体">中的许多功能模块</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">,禁用掉有助于提高系统内存可用量,腾出资源给那些真正需要的软件,让它们运行得更快。</span></p>
<p><strong>5、禁用控制面板</strong></p>
<p><span style="font-family: 宋体">在</span>Linux<span style="font-family: 宋体">中,有许多流行的控制面板,如</span><span style="font-family: Calibri">Cpanel</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">Plesk</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">Webmin</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">phpMyAdmin</span><span style="font-family: 宋体">等,禁用释放出大约</span><span style="font-family: Calibri">120MB</span><span style="font-family: 宋体">内存,内存使用量大约下降</span><span style="font-family: Calibri">30-40%</span><span style="font-family: 宋体">。</span></p>
<p><strong>6、改善Linux Exim服务器性能</strong></p>
<p><span style="font-family: 宋体">使用</span>DNS<span style="font-family: 宋体">缓存守护进程,可降低解析</span><span style="font-family: Calibri">DNS</span><span style="font-family: 宋体">记录需要的带宽和</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">时间,</span><span style="font-family: Calibri">DNS</span><span style="font-family: 宋体">缓存通过消除每次都从根节点开始查找</span><span style="font-family: Calibri">DNS</span><span style="font-family: 宋体">记录的需求,从而改善网络性能。</span></p>
<p>Djbdns<span style="font-family: 宋体">是一个非常强大的</span><span style="font-family: Calibri">DNS</span><span style="font-family: 宋体">服务器,它具有</span><span style="font-family: Calibri">DNS</span><span style="font-family: 宋体">缓存功能,</span><span style="font-family: Calibri">Djbdns</span><span style="font-family: 宋体">比</span><span style="font-family: Calibri">BIND DNS</span><span style="font-family: 宋体">服务器更安全,性能更好,可以直接通过</span><span style="font-family: Calibri">http://cr.yp.to/</span><span style="font-family: 宋体">下载,或通过</span><span style="font-family: Calibri">Red Hat</span><span style="font-family: 宋体">提供的软件包获得。</span></p>
<p><strong>7、使用AES256增强gpg文件加密安全</strong></p>
<p><span style="font-family: 宋体">为提高备份文件或敏感信息安全,许多</span>Linux<span style="font-family: 宋体">系统管理员都使用</span><span style="font-family: Calibri">gpg</span><span style="font-family: 宋体">进行加密,在使用</span><span style="font-family: Calibri">gpg</span><span style="font-family: 宋体">时,最好指定</span><span style="font-family: Calibri">gpg</span><span style="font-family: 宋体">使用</span><span style="font-family: Calibri">AES256</span><span style="font-family: 宋体">加密算法,</span><span style="font-family: Calibri">AES256</span><span style="font-family: 宋体">使用</span><span style="font-family: Calibri">256</span><span style="font-family: 宋体">位密钥,它是一个开放的加密算法,美国国家安全局</span><span style="font-family: Calibri">(NSA)</span><span style="font-family: 宋体">使用它保护绝密信息。</span></p>
<p><strong>8、远程备份服务安全</strong></p>
<p><span style="font-family: 宋体">安全是选择远程备份服务最重要的因素,大多数系统管理员都害怕两件事:</span>(<span style="font-family: 宋体">黑客</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">可以删除备份文件,不能从备份恢复系统。</span></p>
<p><span style="font-family: 宋体">为了保证备份文件</span>100%<span style="font-family: 宋体">的安全,备份服务公司提供远程备份服务器,使用</span><span style="font-family: Calibri">scp</span><span style="font-family: 宋体">脚本或</span><span style="font-family: Calibri">RSYNC</span><span style="font-family: 宋体">通过</span><span style="font-family: Calibri">SSH</span><span style="font-family: 宋体">传输数据,这样,没有人可以直接进入和访问远程系统,因此,也没有人可以从备份服务删除数据。在选择远程备份服务提供商时,最好从多个方面了解其服务强壮性,如果可以,可以亲自测试一下。</span></p>
<p><strong>9、更新默认内核参数设置</strong></p>
<p><span style="font-family: 宋体">为了顺利和成功运行企业应用程序,如数据库服务器,可能需要更新一些默认的内核参数设置,例如,</span>2.4.x<span style="font-family: 宋体">系列内核消息队列参数</span><span style="font-family: Calibri">msgmni</span><span style="font-family: 宋体">有一个默认值</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">例如,共享内存,或</span><span style="font-family: Calibri">shmmax</span><span style="font-family: 宋体">在</span><span style="font-family: Calibri">Red Hat</span><span style="font-family: 宋体">系统上默认只有</span><span style="font-family: Calibri">33554432</span><span style="font-family: 宋体">字节</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">,它只允许有限的数据库并发连接,下面为数据库服务器更好地运行提供了一些建议值</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">来自</span><span style="font-family: Calibri">IBM DB2</span><span style="font-family: 宋体">支持网站</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">:</span></p>
<p>kernel.shmmax=268435456 (32<span style="font-family: 宋体">位</span><span style="font-family: Calibri">)kernel.shmmax=1073741824 (64</span><span style="font-family: 宋体">位</span><span style="font-family: Calibri">)kernel.msgmni=1024fs.file-max=8192kernel.sem=”250 32000 32 1024″</span></p>
<p><strong>10、优化TCP</strong></p>
<p><span style="font-family: 宋体">优化</span>TCP<span style="font-family: 宋体">协议有助于提高网络吞吐量,跨广域网的通信使用的带宽越大,延迟时间越长时,建议使用越大的</span><span style="font-family: Calibri">TCP Linux</span><span style="font-family: 宋体">大小,以提高数据传输速率,</span><span style="font-family: Calibri">TCP Linux</span><span style="font-family: 宋体">大小决定了发送主机在没有收到数据传输确认时,可以向接收主机发送多少数据。</span></p>
<p><strong>11、选择正确的文件系统</strong></p>
<p><span style="font-family: 宋体">使用</span>ext4<span style="font-family: 宋体">文件系统取代</span><span style="font-family: Calibri">ext3</span></p>
<p><span style="font-family: Calibri">● Ext4</span><span style="font-family: 宋体">是</span><span style="font-family: Calibri">ext3</span><span style="font-family: 宋体">文件系统的增强版,扩展了存储限制</span></p>
<p><span style="font-family: Calibri">●</span><span style="font-family: 宋体">具有日志功能,保证高水平的数据完整性</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">在非正常关闭事件中</span><span style="font-family: Calibri">)</span></p>
<p><span style="font-family: Calibri">●</span><span style="font-family: 宋体">非正常关闭和重启时,它不需要检查磁盘</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">这是一个非常耗时的动作</span><span style="font-family: Calibri">)</span></p>
<p><span style="font-family: Calibri">●</span><span style="font-family: 宋体">更快的写入速度,</span><span style="font-family: Calibri">ext4</span><span style="font-family: 宋体">日志优化了硬盘磁头动作</span></p>
<p><strong>12、使用noatime文件系统挂载选项</strong></p>
<p><span style="font-family: 宋体">在文件系统启动配置文件</span>fstab<span style="font-family: 宋体">中使用</span><span style="font-family: Calibri">noatime</span><span style="font-family: 宋体">选项,如果使用了外部存储,这个挂载选项可以有效改善性能。</span></p>
<p><strong>13、调整Linux文件描述符限制</strong></p>
<p>Linux<span style="font-family: 宋体">限制了任何进程可以打开的文件描述符数量,默认限制是每进程</span><span style="font-family: Calibri">1024</span><span style="font-family: 宋体">,这些限制可能会阻碍基准测试客户端</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">如</span><span style="font-family: Calibri">httperf</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">apachebench)</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">Web</span><span style="font-family: 宋体">服务器本身获得最佳性能,</span><span style="font-family: Calibri">Apache</span><span style="font-family: 宋体">每个连接使用一个进程,因此不会受到影响,但单进程</span><span style="font-family: Calibri">Web</span><span style="font-family: 宋体">服务器,如</span><span style="font-family: Calibri">Zeus</span><span style="font-family: 宋体">是每连接使用一个文件描述符,因此很容易受默认限制的影响。</span></p>
<p><span style="font-family: 宋体">打开文件限制是一个可以用</span>ulimit<span style="font-family: 宋体">命令调整的限制,</span><span style="font-family: Calibri">ulimit -aS</span><span style="font-family: 宋体">命令显示当前的限制,</span><span style="font-family: Calibri">ulimit -aH</span><span style="font-family: 宋体">命令显示硬限制</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">在未调整</span><span style="font-family: Calibri">/proc</span><span style="font-family: 宋体">中的内核参数前,你不能增加限制</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">。</span></p>
<p>Linux<span style="font-family: 宋体">第三方应用程序性能技巧</span></p>
<p><span style="font-family: 宋体">对于运行在</span>Linux<span style="font-family: 宋体">上的第三方应用程序,一样有许多性能优化技巧,这些技巧可以帮助你提高</span><span style="font-family: Calibri">Linux</span><span style="font-family: 宋体">服务器的性能,降低运行成本。</span></p>
<p><strong>14、正确配置MySQL</strong></p>
<p><span style="font-family: 宋体">为了给</span>MySQL<span style="font-family: 宋体">分配更多的内存,可设置</span><span style="font-family: Calibri">MySQL</span><span style="font-family: 宋体">缓存大小,要是</span><span style="font-family: Calibri">MySQL</span><span style="font-family: 宋体">服务器实例使用了更多内存,就减少缓存大小,如果</span><span style="font-family: Calibri">MySQL</span><span style="font-family: 宋体">在请求增多时停滞不动,就增加</span><span style="font-family: Calibri">MySQL</span><span style="font-family: 宋体">缓存。</span></p>
<p><strong>15、正确配置Apache</strong></p>
<p><span style="font-family: 宋体">检查</span>Apache<span style="font-family: 宋体">使用了多少内存,再调整</span><span style="font-family: Calibri">StartServers</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">MinSpareServers</span><span style="font-family: 宋体">参数,以释放更多的内存,将有助于你节省</span><span style="font-family: Calibri">30-40%</span><span style="font-family: 宋体">的内存。</span></p>
<p><strong>16、分析Linux服务器性能</strong></p>
<p><span style="font-family: 宋体">提高系统效率最好的办法是找出导致整体速度下降的瓶颈并解决掉,下面是找出系统关键瓶颈的一些基本技巧:</span></p>
<p><span style="font-family: Calibri">● </span><span style="font-family: 宋体">当大型应用程序,如</span><span style="font-family: Calibri">OpenOffice</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">Firefox</span><span style="font-family: 宋体">同时运行时,计算机可能会开始变慢,内存不足的出现几率更高。</span></p>
<p><span style="font-family: Calibri">● </span><span style="font-family: 宋体">如果启动时真的很慢,可能是应用程序初次启动需要较长的加载时间,一旦启动好后运行就正常了,否则很可能是硬盘太慢了。</span></p>
<p><span style="font-family: Calibri">●CPU</span><span style="font-family: 宋体">负载持续很高,内存也够用,但</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">利用率很低,可以使用</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">负载分析工具监控负载时间。</span></p>
<p><strong>17、学习5个Linux性能命令</strong></p>
<p><span style="font-family: 宋体">使用几个命令就可以管理</span>Linux<span style="font-family: 宋体">系统的性能了,下面列出了</span><span style="font-family: Calibri">5</span><span style="font-family: 宋体">个最常用的</span><span style="font-family: Calibri">Linux</span><span style="font-family: 宋体">性能命令,包括</span><strong>top<span style="font-family: 宋体">、</span><span style="font-family: Calibri">vmstat</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">iostat</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">free</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">sar</span></strong><span style="font-family: 宋体">,它们有助于系统管理员快速解决性能问题。</span></p>
<p><strong>(1)top</strong></p>
<p><span style="font-family: 宋体">当前内核服务的任务,还显示许多主机状态的统计数据,默认情况下,它每隔</span>5<span style="font-family: 宋体">秒自动更新一次。如:当前正常运行时间,系统负载,进程数量和内存使用率,</span></p>
<p><span style="font-family: 宋体">此外,这个命令也显示了那些使用最多</span>CPU<span style="font-family: 宋体">时间的进程</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">包括每个进程的各种信息,如运行用户,执行的命令等</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">。</span></p>
<p><strong>(2)vmstat</strong></p>
<p>Vmstat<span style="font-family: 宋体">命令提供当前</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">IO</span><span style="font-family: 宋体">、进程和内存使用率的快照,它和</span><span style="font-family: Calibri">top</span><span style="font-family: 宋体">命令类似,自动更新数据,如:</span></p>
<p>$ vmstat 10</p>
<p><strong>(3)iostat</strong></p>
<p>Iostat<span style="font-family: 宋体">提供三个报告:</span><span style="font-family: Calibri">CPU</span><span style="font-family: 宋体">利用率、设备利用率和网络文件系统利用率,使用</span><span style="font-family: Calibri">-c</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">-d</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">-h</span><span style="font-family: 宋体">参数可以分别独立显示这三个报告。</span></p>
<p><strong>(4)free</strong></p>
<p><span style="font-family: 宋体">显示主内存和交换空间内存统计数据,指定</span>-t<span style="font-family: 宋体">参数显示总内存,指定</span><span style="font-family: Calibri">-b</span><span style="font-family: 宋体">参数按字节为单位,使用</span><span style="font-family: Calibri">-m</span><span style="font-family: 宋体">则以兆为单位,默认情况下千字节为单位。</span></p>
<p>Free<span style="font-family: 宋体">命令也可以使用</span><span style="font-family: Calibri">-s</span><span style="font-family: 宋体">参数加一个延迟时间</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">单位:秒</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">连续运行,如:</span></p>
<p>$ free -s 5</p>
<p><strong>(5)sar</strong></p>
<p><span style="font-family: 宋体">收集,查看和记录性能数据,这个命令比前面几个命令历史更悠久,它可以收集和显示较长周期的数据。</span></p>
<p><span style="font-family: 宋体">其它</span></p>
<p><span style="font-family: 宋体">下面是一些归类为其它的性能技巧:</span></p>
<p><strong>18、将日志文件转移到内存中</strong></p>
<p><span style="font-family: 宋体">当一台机器处于运行中时,最好是将系统日志放在内存中,当系统关闭时再将其复制到硬盘,当你运行一台开启了</span>syslog<span style="font-family: 宋体">功能的笔记本电脑或移动设备时,</span><span style="font-family: Calibri">ramlog</span><span style="font-family: 宋体">可以帮助你提高系统电池或移动设备闪存驱动器的寿命,使用</span><span style="font-family: Calibri">ramlog</span><span style="font-family: 宋体">的一个好处是,不用再担心某个守护进程每隔</span><span style="font-family: Calibri">30</span><span style="font-family: 宋体">秒向</span><span style="font-family: Calibri">syslog</span><span style="font-family: 宋体">发送一条消息,放在以前,硬盘必须随时保持运转,这样对硬盘和电池都不好。</span></p>
<p><strong>19、先打包,后写入</strong></p>
<p><span style="font-family: 宋体">在内存中划分出固定大小的空间保存日志文件,这意味着笔记本电脑硬盘不用一直保持运转,只有当某个守护进程需要写入日志时才运转,注意</span>ramlog<span style="font-family: 宋体">使用的内存空间大小是固定的,否则系统内存会很快被用光,如果笔记本使用固态硬盘,可以分配</span><span style="font-family: Calibri">50-80MB</span><span style="font-family: 宋体">内存给</span><span style="font-family: Calibri">ramlog</span><span style="font-family: 宋体">使用,</span><span style="font-family: Calibri">ramlog</span><span style="font-family: 宋体">可以减少许多写入周期,极大地提高固态硬盘的使用寿命。</span></p>
<p><strong>20、一般调优技巧</strong></p>
<p><span style="font-family: 宋体">尽可能使用</span><strong><span style="font-family: 宋体">静态内容</span></strong><span style="font-family: 宋体">替代动态内容,如果你在生成天气预告,或其它每隔</span>1<span style="font-family: 宋体">小时就必须更新的数据,最好是写一个程序,每隔</span><span style="font-family: Calibri">1</span><span style="font-family: 宋体">小时生成一个静态的文件,而不是让用户运行一个</span><span style="font-family: Calibri">CGI</span><span style="font-family: 宋体">动态地生成报告。</span></p>
<p><span style="font-family: 宋体">为动态应用程序选择最快最合适的</span>API<span style="font-family: 宋体">,</span><span style="font-family: Calibri">CGI</span><span style="font-family: 宋体">可能最容易编程,但它会为每个请求产生一个进程,通常,这是一个成本很高,且不必要的过程,</span><span style="font-family: Calibri">FastCGI</span><span style="font-family: 宋体">是更好的选择,和</span><span style="font-family: Calibri">Apache</span><span style="font-family: 宋体">的</span><span style="font-family: Calibri">mod_perl</span><span style="font-family: 宋体">一样,都可以极大地提高应用程序的性能。</span></p><br><br>
来源:https://www.cnblogs.com/LuLu-0904/p/16784849.html
頁: [1]
查看完整版本: linux服务器硬件及性能查看