优化技巧和诀窍

5

我需要优化我们的Web服务,但不知从何开始。我们正在运行GWT、PHP和PostgreSQL。即使没有查看任何性能数据,我猜最主要的优化将发生在数据库中。

我对重构DB或索引一无所知。(实际上,我对DB一无所知。)所有三个领域的任何指针都非常感谢!

3个回答

10

始终要从度量开始。如果不知道瓶颈在哪里,就不知道该改进什么。 "甚至没有偷看任何性能数据",你很可能会做出错误的决定 - 或者至少,我经常发现对于性能受到影响的位置猜测错误。也许你比我更擅长猜测:) (当然,它很可能在代码中的数据库中...)

度量工具可以简单到查看不同类型请求花费时间的日志语句,也可以复杂到完整的分析器、查询分析等等。在数据库方面,您几乎肯定需要使用EXPLAIN来查看查询执行计划...但在此之前,您需要知道首先哪些查询会影响性能,以及更重要的是,哪些针对 Web 服务本身的请求会很耗时。


1
经常进行性能分析。在创建 spike 解决方案时,从设计时开始进行性能分析。将性能分析作为性能测试的一部分。对生产操作进行性能分析。在开发过程中始终应该有潜在的“热点”列表。 - S.Lott
如果您知道任何可以帮助我进行测量的工具,那就太好了。 - Jonas Byström
在“php分析器”下进行快速搜索会得到很多结果。看起来有几个商业解决方案,也应该有一些免费选项。 - TMN
使用类似于pgfouine http://pgfouine.projects.postgresql.org/ 和autoexplain http://www.postgresql.org/docs/8.4/static/auto-explain.html 的工具来帮助测量postgresql。 - rfusca

2

正如其他人所说,首先要确定瓶颈所在。

关于数据库的问题,我建议在表上创建一些索引以加速缓慢的查询(仅在确定需要时)。

http://www.postgresql.org/docs/8.2/static/sql-createindex.html

CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]
    ( { column | ( expression ) } [ opclass ] [, ...] )
    [ WITH ( storage_parameter = value [, ... ] ) ]
    [ TABLESPACE tablespace ]
    [ WHERE predicate ]

请确保在使用索引时仔细阅读何时以及何时不使用索引的相关内容。


2

在操作数据库之前(并在此之前确定瓶颈),请查看yahoo的最佳实践。您不希望为了微小的速度提升而花费大量时间,通常可以使用链接中的提示来获得大幅度的速度提升。

要对前端进行分析,您可以使用页面速度


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接