<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[ [通讯模型]php-fpm使用unix sock通信和TCP的使用场景及稳定性探讨。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Mon, 28 Oct 2013 07:02:41 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：线上用unix socket线下测试用tcp 9000，配置一样上线会出问题的。再就是这两种的区别。<br/>两种不同配置会在Nginx上反映出来的：<br/>125 connect() to unix:/usr/local/php/var/run/php-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.136.1, server: mytv.xiyou.cntv.cn, request: <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;在你fpm启动脚本php-fpm.conf里配置，在php-fpm.cnf里设置,AF_UNIX稳定性比TCP要高多了,unix socket或者TCP,unix socket的好处是性能更好,一个是AF_UNIX,本地管道，只能本机用一个AF_INET,通过网卡通讯,听说unix不如inet稳定？一个是AF_UNIX,本地管道，只能本机用一个AF_INET,通过网卡通讯。nginx如果打算和fpm在同一台机器，那就用unix sock<br/>如果想分开部署，可以用TCP<br/>基本还是tcp吧<br/>这年头，哪还有一台机器什么都干的事<br/>unix socket是一个环形内存buffer，内核保证顺序<br/>淘宝这里前端接入层是LVS，RS就是nginx + php-fpm，它们之间使用unix sock通信，每台机器都配置一个nginx+php。<br/>回忆未来-向东-Jàck()&nbsp;&nbsp;下午 03:08:27<br/>不同在：<br/>listen = 127.0.0.1:9000 <br/>listen = /usr/local/php/var/run/php-fpm.sock<br/>Nginx在配置上也就不同了：<br/>fastcgi_pass&nbsp;&nbsp;127.0.0.1:9000;&nbsp;&nbsp;<br/>fastcgi_index index.php;<br/>include fcgi.conf;<br/><br/>fastcgi_pass&nbsp;&nbsp;unix:/usr/local/php/var/run/php-fpm.sock;<br/>fastcgi_index index.php;<br/>include fastcgi.conf;<br/><br/><br/>半桶水&nbsp;&nbsp;下午 03:08:33<br/>lvs来分配哪台机器？<br/>话说lvs还没用过<br/>Rango&nbsp;&nbsp;下午 03:08:58<br/>所有的机器都接入LVS，作为LVS的RS<br/>Rango&nbsp;&nbsp;下午 03:10:38<br/>Linux集群必备<br/>回忆未来-向东-Jàck()&nbsp;&nbsp;下午 03:11:49<br/>腾讯有TGW。<br/>Rango&nbsp;&nbsp;下午 03:12:07<br/>腾讯也用LVS<br/>半桶水&nbsp;&nbsp;下午 03:12:10<br/>lvs装在哪？<br/>Rango&nbsp;&nbsp;下午 03:12:39<br/>lvs是运行在内核态的<br/>找一台性能强点的机器部署LVS，<br/>楚吟风&nbsp;&nbsp;下午 03:13:04<br/>工作在四层<br/>Rango&nbsp;&nbsp;下午 03:13:10<br/>然后域名解析过来即可<br/>其他的web机器全部接入lvs<br/>楚吟风&nbsp;&nbsp;下午 03:13:23<br/>听说大流量产生的中断<br/>会导致cpu0耗尽？<br/>半桶水&nbsp;&nbsp;下午 03:13:34<br/>相当于nginx的upstream?<br/>Rango&nbsp;&nbsp;下午 03:13:45<br/>比nginx强太多了<br/>楚吟风&nbsp;&nbsp;下午 03:13:52<br/>lvs保证网络可用<br/>Rango&nbsp;&nbsp;下午 03:13:58<br/>lvs相当于是一台4层交换机<br/>楚吟风&nbsp;&nbsp;下午 03:14:01<br/>ngx那是应用层的了&nbsp;&nbsp;7层<br/>H X M()&nbsp;&nbsp;下午 03:14:14<br/>缺点就是一定要找一台机器做lvs<br/>半桶水&nbsp;&nbsp;下午 03:14:17<br/>我知道，<br/>楚吟风&nbsp;&nbsp;下午 03:14:28<br/>lvs&nbsp;&nbsp;cpu0 100% 的问题<br/>rango了解吗<br/>Rango&nbsp;&nbsp;下午 03:14:28<br/>思科的硬件四层交换机贵的离谱<br/>半桶水&nbsp;&nbsp;下午 03:14:29<br/>我的意思是lvs还是个单点？<br/>Rango&nbsp;&nbsp;下午 03:14:40<br/>@楚吟风 老内核会这样<br/>楚吟风&nbsp;&nbsp;下午 03:14:40<br/>lvs配合keepalived高可用<br/>soga<br/>Rango&nbsp;&nbsp;下午 03:15:32<br/>新内核支持网卡多队列，中断会分配到每一个核上，不存在此问题<br/>楚吟风&nbsp;&nbsp;下午 03:16:04<br/>不过一个网卡只能在绑定到一个cpu上吧<br/>Rango&nbsp;&nbsp;下午 03:16:31<br/>老的Linux是用CPU0来做网络中断的，所以如果CPU0到100%，其他核就算空闲也没用<br/>半桶水&nbsp;&nbsp;下午 03:16:56<br/>lvs这个4层负载高级货暂时还没用过。<br/>Rango&nbsp;&nbsp;下午 03:17:08<br/>lvs确实单点，不过问题不大<br/>lvs一秒能处理百万量级的数据包<br/>lvs也有双机热备的机制，问题不大<br/>楚吟风&nbsp;&nbsp;下午 03:17:48<br/>cat /proc/interrupts<br/>可以看到网卡绑定到一个核上<br/>也就是说无法发挥多核优势了吧？<br/>Rango&nbsp;&nbsp;下午 03:17:59<br/>哦，那就是了<br/>不会啊，可以发挥多核优势。只是网络中断放在CPU0上<br/>楚吟风&nbsp;&nbsp;下午 03:19:11<br/>貌似听人说过<br/>大流量下<br/>网卡中断处理不过来了<br/>那得多高流量啊<br/>Rango&nbsp;&nbsp;下午 03:20:08<br/>很有可能的。比如系统负载本来就高，CPU0还要额外做网络中断处理，自然会到100%，<br/>Rango&nbsp;&nbsp;下午 03:21:33<br/>这种情况下应该用CPU亲和设置，把worker进程绑定到其他核上，让CPU0的负担小一些<br/>楚吟风&nbsp;&nbsp;下午 03:22:09<br/>嗯<br/>这种级别，该上F5了<br/>Rango&nbsp;&nbsp;下午 03:22:22<br/>贵啊<br/>楚吟风&nbsp;&nbsp;下午 03:22:36<br/>哈哈<br/>没几家能到这种流量啊<br/>也就bat了吧<br/>Rango&nbsp;&nbsp;下午 03:23:37<br/>bat也用不起啊<br/>估计只有国家才有这个实力<br/>半桶水 下午 03:24:29<br/>一千个屌丝(pc)干掉几个高富帅还是可以的。<br/>楚吟风&nbsp;&nbsp;下午 03:30:29<br/>我这边都是用的tcp<br/>N台机器专门跑fpm<br/>一台ngx做webserver<br/>还没搞单点<br/>Rango&nbsp;&nbsp;下午 03:32:13<br/>ngx处理能力有限<br/>楚吟风 下午 03:33:10<br/>还凑合<br/>rps&nbsp;&nbsp;30k<br/>活动高峰也就是10k<br/>暂时扛得住<br/>recoye&nbsp;&nbsp;下午 03:38:25<br/>一台nginx几台fpm的？<br/>楚吟风&nbsp;&nbsp;下午 03:45:06<br/>目前有8台<br/>php跑着业务，rps单机4k左右<br/>楚吟风&nbsp;&nbsp;下午 03:46:08<br/>打算搞kvm虚拟化<br/>64核太浪费了<br/>load最高也就2<br/>回忆未来-向东-Jàck&nbsp;&nbsp;下午 03:46:21<br/>我哥就是卖F5的，说是腾讯都不买自己做。<br/>淘宝还真买F5？<br/>只卖了几个secureID卡给腾讯了，还很便宜。<br/>Rango 下午 03:48:33<br/>腾讯连token都自己搞了<br/><br/><textarea name="code" class="php" rows="15" cols="100">
 vi /usr/local/php/etc/php-fpm.conf
vi /usr/local/webserver/php/etc/php-fpm.conf
listen = 127.0.0.1:9000 
listen = /usr/local/php/var/run/php-fpm.sock
</textarea><br/>以上大部分来自PHP的swoole开发组讨论。<br/><br/>我们大部分默认的nginx连接方式为php-cgi监听127.0.0.1:9000的方式，刚刚测试了使用socket方式连接，速度飞快啊！<br/>nginx配置方法：<br/>location ~ &#92;.php$ &#123;<br/> fastcgi_pass unix:/dev/shm/php-fpm.sock;<br/> fastcgi_index index.php;<br/> fastcgi_param SCRIPT_FILENAME /opt/www_data/code/public_html$fastcgi_script_name;<br/> include fastcgi_params;<br/> &#125;<br/><br/>5.2.xx版本php<br/>php-fpm配置方法：<br/>&lt;value name=&quot;listen_address&quot;&gt;/dev/shm/php-fpm.sock&lt;/value&gt;<br/>5.3.xx版本php<br/>listen = /dev/shm/php-cgi.sock<br/>注：这里（/dev/shm）socket在内存中了，用来提高速度。 <br/><br/>来自：http://hxl2009.blog.51cto.com/779549/875000
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论]  [通讯模型]php-fpm使用unix sock通信和TCP的使用场景及稳定性探讨。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>