Home > Backend Development > PHP Tutorial > LNMP和Lamp在高并发情况下选择哪个比较好,

LNMP和Lamp在高并发情况下选择哪个比较好,

WBOY
Release: 2016-06-06 20:33:56
Original
1496 people have browsed it

看到一篇文章说apache最大承受并发数是三四千个,nginx是他的十倍,但是nginx的是基于缓存等的实现,apache是实实在在的三四千个

回复内容:

看到一篇文章说apache最大承受并发数是三四千个,nginx是他的十倍,但是nginx的是基于缓存等的实现,apache是实实在在的三四千个

不知道楼主所谓的实实在在指什么,并发数、请求数、pv是不一样的,单机apache并发数不可能达到34千,nginx也不能一概而论,说并发数是apache的十倍,nginx只是充当代理服务器的角色,真正处理php脚本的是php-fpm,如果非要分一个好坏,nginx处理静态文件的能力要胜于与apache,apache毕竟是老牌的web服务器相比之下稳定性高一些,还有就是内存的占用、cpu的开销这些都是要考虑的因素。

基本没必要纠结这个,你先做到再说吧!
一般业务大家都使用nginx了.这个是标配,主要是为了以后扩展架构以提高访问量方便.另外说apache稳定nginx不稳定实在是无从说起,没这事儿.
正常情况下php业务瓶颈都在数据库上面,至于php这边用什么都随意了.
除非业务过于变态,或者本身程序写的有问题,否则根本遇不到瓶颈.
能做到并发三四千,你自然有人有办法解决.真到那天,你并发个几万都有解决方案.

Linux上Nginx跟PHP-FPM的组合很好.Nginx轻量,稳定,高效,跟PHP-FPM通过FastCGI进行网络通信,松耦合.

Nginx负责处理所有的静态资源,PHP-FPM则专心执行PHP脚本,一个PHP-FPM被阻塞并不会导致Nginx被阻塞.一个PHP-FPM进程崩溃,PHP-FPM的主进程会自动重启一个工作进程,Nginx则可以配置fastcgi_next_upstream实现故障转移,切换到upstream中的另一套PHP-FPM服务.

PHP-FPM可以配置监听不同端口的pool,不同的pool里的工作进程是互不影响的,可以把PHP-FPM不同的pool放到Nginx的upstream集群.

Nginx从1.7.11加入了AIO线程池,能够使用多线程读取和发送文件,以免工人进程被阻塞.对于经过PHP认证身份后输出的附件,PHP可以通过X-Accel-Redirect告诉Nginx文件的路径,让Nginx利用它的AIO线程池读取文件并发送给浏览器,以免阻塞PHP进程.
header("X-Accel-Redirect: $filePath");
//对比下面直接通过PHP输出文件(PHP进程会被阻塞)
//readfile($filePath);

NGINX 1.9.1启用reuseport完美解决惊群后,每秒处理的请求数提升了2到3倍,同时降低了延迟和stdev指标.
http://nginx.com/blog/socket-sharding-nginx-release-1-9-1/

比如你要开100个PHP工作进程:
1.使用Apache + MOD_PHP则需要开启100个httpd工作进程,每个httpd工作进程提供HTTP服务和PHP解析服务.
2.使用Nginx + PHP-FPM则可以开启4个Nginx工作进程(假设你的CPU核心数为4),和100个PHP-FPM进程,总共104个进程,但值得注意的是,100个PHP-FPM进程占用的内存肯定要比100个httpd进程少,因为PHP-FPM不提供HTTP服务,也就是说Nginx + PHP-FPM比Apache + MOD_PHP能够节省94套HTTP服务占用的内存.
3.使用Nginx + Apache + MOD_PHP则是最耗内存的组合.

就简单易用来说,中小网站直接部署Apache(prefork MPM)+MOD_PHP这种经典的组合也不错.另外请注意,PHP官方不推荐在Linux上使用event这个线程化的Apache MPM来搭配MOD_PHP运行,详情请看:
http://www.php.net/manual/zh/faq.installation.php#faq.installation.apa...

我推荐 nginx.
nginx 配置相当灵活,说实话,自从用了 nginx, apache 我就没用过了.

我们公司用的也是 nginx .

首先nginx不处理php动态页面,说它高并发NB,是指处理静态页面。nginx要处理真正的php请求,还需要一样东西:fastcgi,它是另外的一个服务,nginx遇到php都会转给它来处理。其次,apache可以通过mod得形式来把php加载到自身系统中,所以无论是静态页面还是php都是自己处理的。当然啦,apache也可以像nginx那样通过fastcgi来处理php请求,而且很多公司就是这么干的,这样的话并发量和nginx不相上下。至于apache使用mod还是fastcgi形式,取决于你自身业务的特点。静态还是动态,高稳定还是高并发。处理动态内容的瓶颈不是在apache或nginx上,是在php解释器上。想追求高并发,就去做服务器集群吧,这是最实在的。

如果是网站的话,为什么不在NginxApache之上加一个Varnish呢?

还有,Nginx的十倍应该说的是静态页面。如果是动态的话,两者应该相差不多。

趋势是使用nginx,我呆过的几个公司都从apache转nginx了

目前我们用的是LANMP,Nginx + Apache,前端用Nginx,PHP脚本反向代理给Apache去处理!

nginx是反向代理的,而apache不是,apache 比nginx稳定,还是建议使用apache.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template