转:用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,所以一定要给[email protected]设置权限,而不是[email protected]’%’

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都差不多

时间: 2024-11-10 08:33:18

转:用unix socket加速php-fpm、mysql、redis的连接的相关文章

MySQL错误Another MySQL daemon already running with the same unix socket.

启动mysql 报错: [[email protected] ~]# /etc/init.d/mysqld start Socket file /tmp/mysql_slave.sock exists. Is another MySQL daemon already running with the same unix socket? 原因多个Mysql进程使用了同一个socket. 两个方法解决: 第一个是立即关机 使用命令 shutdown -h now 关机,关机后在启动,进程就停止了.

一个简单java程序模拟与Mysql Server建立连接及发送查询SQL

使用普通socket来模拟与Mysql Server建立连接及发送查询SQL,如下代码所示: Socket socket = new  Socket("127.0.0.1",3306); OutputStream out = socket.getOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(out); //建立连接报文信息 来自wireshark(捕捉终端执行mysql -u root -p -h

MySQL故障处理一例_Another MySQL daemon already running with the same unix socket

MySQL故障处理一例:"Another MySQL daemon already running with the same unix socket". [[email protected]121 sbin]# service mysqld status mysqld 已停 [[email protected]-121 sbin]# service mysqld start Another MySQL daemon already running with the same unix

Another MySQL daemon already running with the same unix socket.

问题描述: 查看MySQL进程的状态: [[email protected] lib]# service mysqld statusmysqld is stopped 发现是关闭的,但是启动MySQL却报错 [[email protected] lib]# service mysqld startAnother MySQL daemon already running with the same unix socket. 解决方法:将mysql.sock备份一下,然后重新启动 mv /var/l

MySQL“Another MySQL daemon already running with the same unix socket”的处理和思考

今天早上起来发现mysql登录不上了,service mysqld restart先包正确再报失败,报的错误就是Another MySQL daemon already running with the same unix socket. 太闹心了:大早上的小样儿就给我添堵,看大爷怎么收拾你. 直接干死这个:rm var/lib/mysql/mysql.sock 然后起服务:service mysqld start 我去!竟然不行!上头了! 重头来:shutdown -h now 进来之后:mv

Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket

Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket 特征 如果你遇到如下所列的任何问题之一,本文也许能帮到你. MySQL starts/stops properly when started/stopped with the mysqld service restart, but MySQL does not start when a server is

MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法

发现MySQL服务器因系统磁盘写满导致服务停了,清理磁盘后启动服务时无法正常启动,查看localhost.err日志发现如下报错: [ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock 解决: 查看该文件发现确实是空文件,删除该文件后再启动服务已经可以正常启动.参考链接 https://blog.csdn.net/qq_36183569/article/details/83022519 总结: mysql.sock.lock是可读

LNMP搭建(CentOS 6.3+Nginx 1.2.0+PHP 5.3.15(fpm)+ MySQL 5.5.35)

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过三年了.Igor 将源代码以类BSD许可证的形式发布. 系统环境: # cat /etc/redhat-release CentOS release 6.3 (Final) 1.安装所需的第三方库 yum -y install gcc

golang tcp 2 unix socket proxy

想将mysql 的TCP 封死,所有外部链接由我的proxy来控制,so 写了一个 tcp 转 unix socket 的 proxy. package main import ( "os" "fmt" "net" "io" "sync" "time" ) type proxy struct{ Host string Port string Local string } func run