2010-02-23 11 views
5

Necesito optimizar nuestro servicio web, pero no sé por dónde empezar. Estamos ejecutando GWT, PHP y PostgreSQL. Sin siquiera haber alcanzado el máximo en los datos de rendimiento, supongo que las principales optimizaciones van a suceder en la base de datos.Consejos y trucos de optimización

No sé nada sobre la reestructuración de la base de datos, ni la indexación. (No sé nada sobre DBs en realidad.) ¡Todos los indicadores fueron muy apreciados en cualquiera de las tres áreas!

Respuesta

10

Siempre comenzar con la medición. Hasta que sepa dónde están los cuellos de botella, no sabe qué mejorar. "Sin siquiera haber echado un vistazo a los datos de rendimiento" es poco probable que realice la llamada correcta, o al menos, con frecuencia me parece que I hacen conjeturas incorrectas sobre el daño del rendimiento. Tal vez sea mejor adivinar que yo :) (Por supuesto, bien puede estar en la base de datos en su código ...)

Las herramientas de medición pueden ser tan simples como las declaraciones de registro para ver cuánto tiempo los diferentes tipos de solicitudes tomar, a los perfiladores completos, analizadores de consultas, etc. En el lado de la base de datos, seguramente querrá usar EXPLAIN para ver los planes de ejecución de la consulta ... pero antes de eso, querrá saber qué consultas le están perjudicando en el primer lugar, y más que eso, que las solicitudes al propio servicio web son costosas.

+1

Perfil temprano y con frecuencia. Comience a perfilar en el momento del diseño al crear soluciones de pico. Incluya perfiles como parte de las pruebas de rendimiento. Operaciones de producción de perfiles. Uno debe tener una lista de posibles "puntos calientes" en todo momento en el proceso de desarrollo. –

+0

Si conoce alguna herramienta que me ayude a hacer las mediciones, sería grandioso. –

+0

Una búsqueda rápida en "php profiler" da muchos éxitos. Parece haber varias soluciones comerciales, y también debería haber algunas opciones gratuitas. – TMN

2

Mire el best practices from yahoo antes de tocar el db (y antes de eso identifique su cuello de botella). No desea dedicar mucho tiempo a una pequeña mejora de velocidad, por lo general, se pueden lograr grandes aceleraciones usando los consejos del enlace.

Para perfilar su interfaz, puede usar page speed.

2

Como ha dicho el resto, asegúrese de identificar primero sus cuellos de botella.

En cuanto a sus preocupaciones acerca de la base de datos va yo sugeriría la creación de algunos índices en las tablas a acelerar las consultas lentas (sólo una vez identificados)

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 ] 

Por favor asegúrese de hacer algunas leyendo cuándo y cuándo no usar un índice

Cuestiones relacionadas