用unix socket加速php-fpm、mysql、redis的连接
图虫的服务器长期是单机运行。估计除了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,所以一定要给username@localhost设置权限,而不是username@’%’
redis(phpredis)启用unix socket的方法
1.redis 默认没有开启unix socket,需要在/etc/redis/redis.conf中修改。注意unixsocketperm 777
unixsocket /var/run/redis/redis.sock unixsocketperm 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都差不多
建议继续学习:
- 推荐一些socket工具,TCP、UDP调试、抓包工具 (阅读:10334)
- 推荐一些socket工具,TCP、UDP调试、抓包工具 (阅读:8127)
- 浅析linux kernel network之socket创建 (阅读:6312)
- nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket (阅读:5687)
- python中的socket代理 (阅读:5734)
- web socket 心跳包的实现方案 (阅读:5589)
- netstat和web主机socket文件分析 (阅读:5148)
- 使用socket.io和node.js搭建websocket应用 (阅读:4875)
- php socket为什么这么慢,直到超时 (阅读:4618)
- php实现的thrift socket server (阅读:4416)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:shen2 来源: 沈二铺子
- 标签: socket
- 发布时间:2013-07-07 22:05:39
-
[884] WordPress插件开发 -- 在插件使用 -
[136] 解决 nginx 反向代理网页首尾出现神秘字 -
[57] 整理了一份招PHP高级工程师的面试题 -
[54] Innodb分表太多或者表分区太多,会导致内 -
[54] 如何保证一个程序在单台服务器上只有唯一实例( -
[54] 分享一个JQUERY颜色选择插件 -
[53] jQuery性能优化指南 -
[52] 用 Jquery 模拟 select -
[52] CloudSMS:免费匿名的云短信 -
[51] 全站换域名时利用nginx和javascri
