標籤:
圖蟲的伺服器長期是單機運行。估計除了mysql之外,php-fpm和redis還可以在單機上共存很長時間。(多說伺服器早就達成了單機每日2000萬+動態請求,所以我對單機搞定圖蟲的大流量非常樂觀)
如果是單機服務,其實就不需要用IP哪怕是127.0.0.1這樣的IP去串連mysql/redis/php了,因為即使是127.0.0.1也是要走TCP/IP層的。
unix提供的unix socket來實現單機的連接埠訪問,很多文章提到用unix socket可以提升連線速度。
我簡單測試了一下,200次redis請求的耗時38ms,如果改成unix socket方式,立刻降到27ms。這簡直是立竿見影啊,10ms的差距足以讓我們有動力把IP方式改成unix socket方式。
Mysql(PDO)啟用unix socket的方法
1.在PDO的DSN裡面:原來寫host:xxx,改成unix_socket:/var/run/mysqld/mysqld.sock (當然你可以在my.cnf裡面設定成別的)
2.給mysql的使用者名稱@localhost,設定存取權限。由於unix_socket並不是主機,所以用unix socket方式串連mysql,mysql會強制認為使用者是來自於localhost,所以一定要給[email protected]設定許可權,而不是[email protected]’%’
redis(phpredis)啟用unix socket的方法
1.redis 預設沒有開啟unix socket,需要在/etc/redis/redis.conf中修改。注意unixsocketperm 777
unixsocket /var/run/redis/redis.sockunixsocketperm 777
2.用phpredis串連:
$redis->connect(‘/var/run/redis/redis.sock‘)
nginx + php-fpm啟用unix socket的方法
1.php-fpm 的pool設定檔中:
listen = /var/run/php5-fpm.sock;
2.nginx sites的設定檔中:
fastcgi_pass unix:/var/run/php5-fpm.sock;
由於redis串連次數很多,因此redis使用unix socket的效果最明顯,mysql其次,php基本上沒有用不用sock都差不多
轉:用unix socket加速php-fpm、mysql、redis的串連