西西河

主题:【讨论】nginx 还是 apache? -- 铁手

共:💬36 🌺49 新:
分页树展主题 · 全看 上页 下页
    • 家园 还是先介绍一下

      现在的结构,访问的数量级别,盲目的修改和优化都是没有好处的。还有硬件是否可以升级。

    • 家园 当然用nginx

      我们公司线上环境08年前是apache为主,现在逐渐都迁移到nginx上,nginx性能比php强多了,轻松达到上万个并发连接,几千的tps。目前线上nginx服务器大约上千台,稳定性很好,文档很强,而且nginx的插件也很多功能强大,使用方便。

      我现在的工作是开发一个应用hosting环境,类似google app engine。其中一种典型的应用模型就是nginx+fastcgi,现在我平台上跑的大的应用,就是采用这种模型。每天1600万个http请求(不是pv),很稳定。

      需要的话,我可以提供技术支持,不管是开发nginx插件还是hack fastcgi,都没问题。

      • 家园 环境不同,应用不同选择也不同,Nginx未必适合老铁

        1.老铁的西西河服务器有HA吗,还是单独服务器,如果是后者httpd的稳定性更加重要。Apache的prefork虽然老土,但一个进程垮掉只影响一个连接,系统还OK,影响有限。我没有Nginx的稳定性数据,但根据我的经验,bad或恶意的request很容易crash掉httpd。一个小例子:

        Get / HTTP/1.1

        Host:127.0.0.1

        会很容易把httpd的proxy模块推入死锁。实际应用中各种边界条件或risk condition多不胜数,nginx是否能处理好不知道啊。

        看看nginx的changelog :http://nginx.org/en/CHANGES,似乎很有一些segfault bugs

        2.老铁的西西河动态内容多吗,如果很多,那瓶颈会在php的解释器,

        改变httpd作用有限

        用top看看memory usage大的apache process,然后用strace -p 或lsof -p pid_of_the_process 看看究竟它在干什么呢,就会有个直观概念

        • 家园 根据我对apache和nginx的使用经验看,n胜出

          nginx默认的工作模式是一个master进程加n个worker进程,n默认是4,一般配置成cpu个数。只有worker进程处理http请求,所以即使某个worker进程崩溃了,也不会影响其他worker进程,而且多数情况下master会重启崩溃的worker。

          至于说bug,这世界上没有bugfree的软件,但是普通的应用场景根本不会触发nginx的bug,这包括了西西河的应用。其实我们公司以前也是使用apache,不过这些年都逐渐改用nginx,光我团队负责的nginx就有几十台。应该说使用效果很好,非常稳定。除非改脚本,否则根本不用管它。国内的大互联网公司,基本都放弃apache了。

          另外nginx的维护非常方便,脚本可读性很好。

    • 家园 老铁的西西河架构比较怪,起码俺看前端的东西如此。

      是否适用反向PROXY有待考虑。

    • 家园 刚才问了一下,最稳定的还是APACHE,NGINX

      一般只是做静态内容。

      • 家园 这是以前的观点了。

        很多时候,访问数据库/缓存等动态内容都可以用nginx脚本完成了。

        现在nginx的插件不要太强大,啥都可以做,比如用了lua的nginx插件,呵呵。

        另外nginx的配置很简单易读。

    • 家园 NGINX很稳定,学习成本也低

      还可以用来做load balance 和 缓存服务器。

      配置也简单,可以实线的功能也不少。

      PHP不熟悉。

      另外铁老大可以把网站的架构给大家说说,大家帮忙出出主意。

    • 家园 动态内容用apache,静态内容用nginx

      我工作中写过Apache的module,也写过类似nginx的event driven的http proxy.从稳定性而言apache prefork无敌.

      主要归功于古老的多进程架构,一个coredump不会把全系统弄垮。但event/thread架构就不一样了一个coredump就会down掉整个系统。而coredump是很难避免的。

      所以css,javascript,image和静态html可以由ngnix serve

      php driven的内容还有apache来

    • 家园 内存不足干嘛不加内存?

      nginx在俄罗斯第二大网站用了这些年,稳定性有什么问题?国内新浪搜狐等大站都用它。

      你目前的配置是怎样要说一下。

      如果硬件不能改动(比如加内存),可以前端nginx负载均衡,后端多个web server(nginx、apache随便选,看你熟悉哪个)。web server可以一直加,直到数据库撑不住。然后可以用高速缓存作为数据库和web server的缓冲,memcached或者Redis。

分页树展主题 · 全看 上页 下页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河