IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

用unix socket加速php-fpm、mysql、redis的连接

沈二铺子 2013-07-07 22:05:39 累计浏览 7,559 次
本机暂存

   图虫的服务器长期是单机运行。估计除了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都差不多

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,250)
  2. 使用gettext来支持PHP的多语言 (累计阅读 39,267)
  3. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,397)
  4. redis源代码分析 - persistence (累计阅读 32,228)
  5. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,162)
  6. Mysql监控指南 (累计阅读 21,350)
  7. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,407)
  8. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,519)
  9. 我的PHP,Python和Ruby之路 (累计阅读 13,146)
  10. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,056)