zoukankan      html  css  js  c++  java
  • 转:用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都差不多

  • 相关阅读:
    linux重新编译内核
    无废话ubuntu 13.4w文件共享配置
    VB6关于判断模态窗体的问题
    在.NET中快速创建一个5GB、10GB或更大的空文件
    利用虚拟光驱实现 将WINDOWS文件供虚拟机中的UBUNTU共享
    论这场云盘大战,以及各网盘的优劣
    struts2 全局格式化,格式化时间,金钱,数字
    SQL SERVER 2000/2005/2008数据库数据迁移到Oracle 10G细述
    女攻城师走在移动互联网道路的这两年
    用正则匹配多行文本
  • 原文地址:https://www.cnblogs.com/youxin/p/4208723.html
Copyright © 2011-2022 走看看