Archive for the ‘Optimizacion’ Category

Instalando xhprof para profiling de PHP

domingo, noviembre 29th, 2015

Una de las herramientas para hacer profiling en PHPes xhprof. Al momento de escribir este articulo estaba en su versión 0.9.4

Los pasos a seguir en su instalacion en mi caso en CEntOS son:

yum install graphviz
wget https://pecl.php.net/get/xhprof-0.9.4.tgz
tar xzf xhprof-0.9.4.tgz 
cd xhprof-0.9.4/extension/
phpize
./configure
make
make install

Luego editas el INI

vi /etc/php.d/xhprof.ini

Le estableces

[xhprof]
extension=xhprof.so
xhprof.output_dir="/tmp/xhprof"

Antes de reiniciar apache crea la carpeta para que guarde los datos del profiling

cd /tmp
mkdir xhprof
chown apache.apache xhprof/
ln -s /var/log/xhprof-0.9.4/xhprof_html xhprof
systemctl restart httpd

Solución a Internal Dummy Connection

domingo, julio 6th, 2014

Es posible si tienes un servidor apache corriendo con una version mayor a la 2.2.x que te aparezca una linea en el log construída de la siguiente forma

::1 - - [06/Jul/2014:22:27:48 -0400] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.2.15 (Red Hat) (internal dummy connection)"

En mi caso existian varias al punto de que se generaban en algunos casos una por segundo. Pensé que era algo que no debía pasar, pero la misma documentacion de apache dice que esto sucede para poder administrar los procesos hijos que genera apache promoviendo una solución, el establecer en el httpd.conf, donde se configura el log la línea

SetEnvIf Remote_Addr "127\.0\.0\.1" loopback

Esto no soluciona el problema, sólo logra que la linea no se escriba en el log, por lo que igual sabes que se esta administrando algo de forma que en algunos casos carga el servidor, porque se estan enviando peticiones desde loopback, o sea, desde si mismo, para si mismo. Descubri en elgunos sitios que las directivas aplicadas en un .htaccess en la raiz de /var/www/html minimizaba el problema

RewriteCond %{HTTP_USER_AGENT} ^.*internal dummy connection.*$ [NC]
RewriteRule .* - [F,L]

Finalmente encontre a alguien que comento que debiese ser que los min server y maxserver estarán mal configurados, por lo que debían incrementarse, a lo cual hice caso, y hasta el momento no he vuelto a tener el aviso, en mi caso la siguiente configuracion ayudó (verifica bien los valores antes de cambiarlos, podrías provocar en tu servidor otras situaciones derivadas del cambio):

<IfModule prefork.c>
StartServers       20
MinSpareServers    100
MaxSpareServers    200
ServerLimit     1530
MaxClients      1530
MaxRequestsPerChild  4000
</IfModule>

 

Ver
Wiki Apache Internal Dummy conection

Gestion del tiempo

viernes, enero 4th, 2013

Es importante para cada uno ver como ocupa el tiempo, más si estas en ingenierías donde el tiempo es un bien escaso. Bien es cierto que por mi parte utilizo conceptos de PSP (Personal Software Process) para gestionar mi tiempo, existen personas que hacen mucho más que yo y el tiempo les alcanza y les sobra.

Por lo mismo es interesante compartir un articulo (una traducción) de Martin Marsavsky que es un inversor en nuevas tecnologías además de dirigir más de una compañía… lo ideal es que solo trabaja de 9 a 14hrs.

Como linux puede bootear completamente en menos de 200MB

jueves, diciembre 27th, 2012

Comno dije anteriormente lo interesante de linux es que existen personas que no se quedan tranquilas y permiten que este sistema operativo tenga mejores capacidades, en este caso Slax 7.0 puede bootear con modo gráfico en menos de 200MB de RAM, por lo que ni que decir si tienes más que eso.

Un artículo in teresante escrito por el mismo creador de Slax lo puedes encontrar en esta dirección.

Como digo, sigue siendo interesante linux.

Comprimir CSS o JS con YUI compressor

martes, octubre 2nd, 2012

YUI Compressor es una herramienta que se utiliza para minimizar los archivos CSS o javascript. Esto porque cuando se escriben estos archivos se utilizan muchos caracteres para que estos archivos visualmente para el desarrollador se vean bien, pero adicionandelos un montos de bytes que no cumplen n inguna función más que la de ocupar espacio.

Para esto (minimizar el tamaño de estos archivos sin restarle la funcionalidad), existen un para de herramientas, la que nos convoca es YUI Compressor, escrita en Java, minimiza cualquiera de estas extensiones (CSS o JS).

Puedes descargarlo aqui o utilizarla Online a través de esta página.

Así por ejemplo, comprimes algo asi

Y lo dejas asi, sin perder la consistencia del CSS

Habilitando modulo expires de apache

miércoles, septiembre 26th, 2012

Una de las estrategias para acelerar la carga de tus páginas (al menos a las personas que ya te han visitado) es activando el modulo expires de Apache. Esto significa que se transmite dentro del protocolo una directiva al navegador que estes utilizando la fecha de expiración de los archivos.

Existen archivos que por su naturaleza no son dinamicos, y su vida util es bastante más que un día o una hora, por lo que cuando se transmite el archivo, no es necesario volver a transmitirlo si el usuario ya lo posee en su caché.

Activando el modo expires, se le entrega información al navegador para que mantenga por un tiempo determinado los recursos transmitidos.

En el caso de este blog por ejemplo los javascript (*.js), los css (*.css) y algunos otros tipos de archivos luego de ser subidos no son modificados, ni tampoco son dinámicos con lo que la configuracion de mi .htaccess esta de la siguiente forma:

ExpiresActivate On
<filesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf|swf|mov|mp3|wmv|ppt|xml|txt|html|js|css|htm)$">
  ExpiresDefault A2419200
  Header append Cache-Control "public"

Lo que significa que todos esos tipos de archivo pueden expriras después de un año.

Se puede complementar con (dentro del bloque de IfModule)

<filesMatch "\.(php|cgi|pl)$">
  ExpiresDefault A0
  Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
  Header set Pragma "no-cache"

Para indicar que esas extensiones son dinamicas, no deben se cacheadas y deben siempre consultarse.