Etikettarkiv: unix

Bättre prestanda med Unix domain sockets

Ett sätt att öka prestandan när det gäller kommunikation internt inom ditt eget system är att använda Unix domain sockets. Istället för att använda TCP för att kommunicera internt mellan processer på ditt system så bör du med fördel använda Unix-sockets då detta påverkar prestandan positivt.

Några exempel på där du kan använda Unix-sockets är i Redis samt om du använder Nginx och PHP-FPM. För att använda Unix-sockets i Redis behöver du enbart lägga till följande rad i redis.conf:

unixsocket /tmp/redis.sock

Och för att använda denna socket när du ansluter kan variera lite beroende på vilken klient du använder, men på följande sätt gör jag:

$redis->connect(’/tmp/redis.sock’);

Glöm inte att rättigheterna på /tmp/redis.sock måste vara så att både Redis samt klienten kan läsa. Nu över till hur man konfigurerar Nginx och PHP-FPM att använda sockets.

Första steget är att konfigurera FPM att lyssna på en socket, och detta görs i konfigurationsfilen. Min återfinnes här:

/etc/php5/fpm/pool.d/www.conf

Och i denna fil ändrar jag där raden listen återfinnes så det ser ut något i stil med:

listen = /var/run/php5-fpm.sock

Och nästa steg är att ändra så att Nginx vet att vi har en Unix-socket för PHP-exekvering och det kan göras genom att lägga till eller ändra din ”upstream” om du använder en sådan:

upstream php {
        server unix:/var/run/php5-fpm.sock;
}

Och sedan använda fastcgi_pass php på följande sätt till varje server:

     location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                include /etc/nginx/fastcgi_params;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
        }

Vill du fördjupa dig ännu mer gällande Unix sockets kan du läsa här. MySQL och PHP skall enligt manualsidan automatiskt välja Unix sockets om det finns tillgängligt vilket det bör göra standardmässigt.

Ubuntu Linux server

Jag har länge varit ett stort fan av diverse BSD UNIX dialekter (främst FreeBSD) men har under senare år börjat gilla Linux mer och mer för att det kommer mer support för diverse suspekta nätverkskort men även programmvaror så när jag installerade den senaste servern så beslutade jag mig för att ge Ubuntu Server en chans (efter att ha kört Debian rätt länge) och är mycket nöjd än så länge.

En annan aspekt i det hela är att jag vill lägga mindre tid på administration och mer på utveckling och där finner jag Debian/Ubuntu:s pakethanteringssystem mycket trevligt.