<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>多nginx单php-fpm的配置方法[from科学院]上的评论</title>
	<atom:link href="http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html/feed" rel="self" type="application/rss+xml" />
	<link>http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html</link>
	<description>PHP、JAVA、缓存、架构、经验、分享</description>
	<lastBuildDate>Tue, 24 Jan 2012 07:29:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>[科学院手记]人人网新鲜事分享现场转播 &#124; 我是陈科学院-about php and java&#124;php与java科学院</title>
		<link>http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html#comment-12019</link>
		<dc:creator>[科学院手记]人人网新鲜事分享现场转播 &#124; 我是陈科学院-about php and java&#124;php与java科学院</dc:creator>
		<pubDate>Wed, 02 Dec 2009 09:43:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.54chen.com/?p=817#comment-12019</guid>
		<description>[...] 多nginx单php-fpm的配置方法[from科学院] [...]</description>
		<content:encoded><![CDATA[<p>[...] 多nginx单php-fpm的配置方法[from科学院] [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>cc0cc</title>
		<link>http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html#comment-11978</link>
		<dc:creator>cc0cc</dc:creator>
		<pubDate>Thu, 05 Nov 2009 03:01:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.54chen.com/?p=817#comment-11978</guid>
		<description>牛，哈哈，你要出个专著才行</description>
		<content:encoded><![CDATA[<p>牛，哈哈，你要出个专著才行</p>
]]></content:encoded>
	</item>
	<item>
		<title>agentzh</title>
		<link>http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html#comment-11977</link>
		<dc:creator>agentzh</dc:creator>
		<pubDate>Thu, 05 Nov 2009 02:58:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.54chen.com/?p=817#comment-11977</guid>
		<description>&gt; 一个缺点是每个线程都有自己的 thread，

呃。。。笔误： s/都有自己的 thread/都有自己的 stack/ :P</description>
		<content:encoded><![CDATA[<p>&gt; 一个缺点是每个线程都有自己的 thread，</p>
<p>呃。。。笔误： s/都有自己的 thread/都有自己的 stack/ <img src='http://www.54chen.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>agentzh</title>
		<link>http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html#comment-11972</link>
		<dc:creator>agentzh</dc:creator>
		<pubDate>Wed, 04 Nov 2009 09:33:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.54chen.com/?p=817#comment-11972</guid>
		<description>由于都是极简单的 C 和 epoll/kqueue/etc 交互，本身的开销极小，呵呵。事实上，有些 Java 框架已经实现了这样的想法，只不过无法脱离其框架单独使用而已，呵呵。

使用多线程拼并发的一个缺点是每个线程都有自己的 thread，呵呵，因此线程数一大，就得用较小的 stack size，于是程序逻辑会受制于很小的 stack size，否则 10K 并发很容易用尽所有的  RAM，因此函数递归啥的，就得悠着点儿用了，呵呵。我昨儿在用 1 万并发去压 tokyotyrant 服务器时，就不得不将 ttserver 使用的 stack size 调小到 500 KB（用 100KB 的话，ttserver 就直接 segfault 栈溢出了，呵呵），这样让它起 3000 个 pthread 就差不多可以扛 10k 并发了。默认的 MB 级的 stack size 一下就把我的本本上的 RAM 都用得差不多了，哈哈，pthread 都无法成功创建。

详情见这篇著名的 C10K 文章中的讨论： http://www.kegel.com/c10k.html 当然，也有一些哥们抨击 multi-thread 在高并发场合的严重的性能开销，是因为缺乏真正靠谱的 multi-thread 实现所导致的，关于此问题在那篇 c10k 中亦有讨论。。。呵呵。</description>
		<content:encoded><![CDATA[<p>由于都是极简单的 C 和 epoll/kqueue/etc 交互，本身的开销极小，呵呵。事实上，有些 Java 框架已经实现了这样的想法，只不过无法脱离其框架单独使用而已，呵呵。</p>
<p>使用多线程拼并发的一个缺点是每个线程都有自己的 thread，呵呵，因此线程数一大，就得用较小的 stack size，于是程序逻辑会受制于很小的 stack size，否则 10K 并发很容易用尽所有的  RAM，因此函数递归啥的，就得悠着点儿用了，呵呵。我昨儿在用 1 万并发去压 tokyotyrant 服务器时，就不得不将 ttserver 使用的 stack size 调小到 500 KB（用 100KB 的话，ttserver 就直接 segfault 栈溢出了，呵呵），这样让它起 3000 个 pthread 就差不多可以扛 10k 并发了。默认的 MB 级的 stack size 一下就把我的本本上的 RAM 都用得差不多了，哈哈，pthread 都无法成功创建。</p>
<p>详情见这篇著名的 C10K 文章中的讨论： <a href="http://www.kegel.com/c10k.html" rel="nofollow">http://www.kegel.com/c10k.html</a> 当然，也有一些哥们抨击 multi-thread 在高并发场合的严重的性能开销，是因为缺乏真正靠谱的 multi-thread 实现所导致的，关于此问题在那篇 c10k 中亦有讨论。。。呵呵。</p>
]]></content:encoded>
	</item>
	<item>
		<title>cc0cc</title>
		<link>http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html#comment-11971</link>
		<dc:creator>cc0cc</dc:creator>
		<pubDate>Wed, 04 Nov 2009 09:20:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.54chen.com/?p=817#comment-11971</guid>
		<description>nginx subreqest? 这应该是个天才的想法，不过，这个本身的开销会不会很大？
现在常用java搞网络，有什么堵的，一个线程搞定，感觉方便太多了。</description>
		<content:encoded><![CDATA[<p>nginx subreqest? 这应该是个天才的想法，不过，这个本身的开销会不会很大？<br />
现在常用java搞网络，有什么堵的，一个线程搞定，感觉方便太多了。</p>
]]></content:encoded>
	</item>
	<item>
		<title>agentzh</title>
		<link>http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html#comment-11970</link>
		<dc:creator>agentzh</dc:creator>
		<pubDate>Wed, 04 Nov 2009 09:13:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.54chen.com/?p=817#comment-11970</guid>
		<description>突然想说一句半题外话，呵呵：

我们发现，对于 nginx + php farm 的并发性能影响最大的经常是，当 php 发起到 DB 或者 memcached 或者后端 HTTP service 时，当前 php 进程是阻塞的。

因此我们打算试试让 php 进程需要发起二级 IO 请求时，直接由 nginx 的 subrequest 来代理之，这样，php 端的 IO 便可以与 nginx 的性能极好的 event model 融为一体，从而提升单机整体的并发能力。（这对于 Perl/Python/Ruby/Haskell/V8 等其他的以 fastcgi 形式挂在 nginx 后面的 web 应用亦是适用的。）

因此我们需要借用 fastcgi 协议去支持 fastcgi 后端直接发起 nginx subreqest，并传递 subrequest 完成后需要打开的“continuation 对象”，并结果和控制权重新交回指定的 fastcgi 后端入口。</description>
		<content:encoded><![CDATA[<p>突然想说一句半题外话，呵呵：</p>
<p>我们发现，对于 nginx + php farm 的并发性能影响最大的经常是，当 php 发起到 DB 或者 memcached 或者后端 HTTP service 时，当前 php 进程是阻塞的。</p>
<p>因此我们打算试试让 php 进程需要发起二级 IO 请求时，直接由 nginx 的 subrequest 来代理之，这样，php 端的 IO 便可以与 nginx 的性能极好的 event model 融为一体，从而提升单机整体的并发能力。（这对于 Perl/Python/Ruby/Haskell/V8 等其他的以 fastcgi 形式挂在 nginx 后面的 web 应用亦是适用的。）</p>
<p>因此我们需要借用 fastcgi 协议去支持 fastcgi 后端直接发起 nginx subreqest，并传递 subrequest 完成后需要打开的“continuation 对象”，并结果和控制权重新交回指定的 fastcgi 后端入口。</p>
]]></content:encoded>
	</item>
</channel>
</rss>

