性能调优攻略(5)

来源:酷壳网 作者:陈皓
  

C)文件系统调优

关于文件系统,因为文件系统也是有cache的,所以,为了让文件系统有最大的性能。首要的事情就是分配足够大的内存,这个非常关键,在Linux下可以使用free命令来查看 free/used/buffers/cached,理想来说,buffers和cached应该有40%左右。然后是一个快速的硬盘控制器,SCSI会好很多。最快的是Intel SSD 固态硬盘,速度超快,但是写次数有限。

接下来,我们就可以调优文件系统配置了,对于Linux的Ext3/4来说,几乎在所有情况下都有所帮助的一个参数是关闭文件系统访问时间,在/etc/fstab下看看你的文件系统 有没有noatime参数(一般来说应该有),还有一个是dealloc,它可以让系统在最后时刻决定写入文件发生时使用哪个块,可优化这个写入程序。还要注间一下三种日志模式:data=journal、data=ordered和data=writeback。默认设置data=ordered提供性能和防护之间的最佳平衡。

当然,对于这些来说,ext4的默认设置基本上是最佳优化了。

这里介绍一个Linux下的查看I/O的命令—— iotop,可以让你看到各进程的磁盘读写的负载情况。

其它还有一些关于NFS、XFS的调优,大家可以上google搜索一些相关优化的文章看看。关于各文件系统,大家可以看一下这篇文章——《Linux日志文件系统及性能分析

4.5)数据库调优

数据库调优并不是我的强项,我就仅用我非常有限的知识说上一些吧。注意,下面的这些东西并不一定正确,因为在不同的业务场景,不同的数据库设计下可能会得到完全相反的结论,所以,我仅在这里做一些一般性的说明,具体问题还要具体分析。

A)数据库引擎调优

我对数据库引擎不是熟,但是有几个事情我觉得是一定要去了解的。

B)SQL语句优化

关于SQL语句的优化,首先也是要使用工具,比如:MySQL SQL Query AnalyzerOracle SQL Performance Analyzer,或是微软SQL Query Analyzer,基本上来说,所有的RMDB都会有这样的工具,来让你查看你的应用中的SQL的性能问题。 还可以使用explain来看看SQL语句最终Execution Plan会是什么样的。

还有一点很重要,数据库的各种操作需要大量的内存,所以服务器的内存要够,优其应对那些多表查询的SQL语句,那是相当的耗内存。

下面我根据我有限的数据库SQL的知识说几个会有性能问题的SQL:

还是那句话,具体要看什么样的数据,什么样的SQL语句,你才知道用哪种方法是最好的。

关于SQL语句的优化,网上有很多文章, 不同的数据库引擎有不同的优化技巧,正如本站以前转发的《MySQL性能优化的最佳20+条经验

先写这么多吧,欢迎大家指正补充。

注:这篇文章的确是个大杂烩。其实其中的说到的很多技术在网上都有很多很多的技术文章,google一下就能找到一堆有很多细节的文章,所以我也就不写了。这篇性能调优的文章写作的动机是之前看到 @淘宝褚霸 强推的highscalability.com上的这篇文章:Big List Of 20 Common Bottlenecks,觉得这篇文章泛泛而谈,觉得自己能写得比它好,所以就产生了动机。


时间:2012-06-21 14:19 来源:酷壳网 作者:陈皓 原文链接

好文,顶一下
(0)
0%
文章真差,踩一下
(1)
100%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
论坛精华
一周热点
无觅相关文章插件,快速提升流量