西西河

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

共:💬36 🌺49 新:
全看树展主题 · 分页 下页
家园 【讨论】nginx 还是 apache?

最近网站有一段时间很慢,有时候导致服务器崩溃,所以在琢磨是不是用 nginx。

nginx据说很好,特别是用的内存资源很少,在同样的内存容量条件下,可以支持比 apache 多的多的并发访问。我对nginx不熟,对新的apache了解也不够多,这里想请问一下行家,两者之间该怎么选择?

对nginx的最大担心就是它的开发稳定性。之前对lighttp也有过兴趣,那个时候也是新宠,冒的很快,但是不久就出现内存泄露的问题,现在来看,元气还没有恢复,使用的人数似乎不多。虽然现在nginx的风头很健,但是不知道会不会出现 lighttp 类似的问题。相对而言,apache 的开发从历史来看也好,从它的规模来看也好,断档或者飘忽的情况不太会发生。

我目前的最大关注点是内存问题。从网站的情况来看,目前的内存在大多数情况下是够用的,但是也有挡不住的时候。nginx 能不能解决这个问题?或者新的 apache 的 event MPM 能不能缓解问题?worker 呢?我为了保险,目前是用 prefork 。

简单测试过 nginx。碰到一个问题,用 php-cgi 来作为 fastcgi 的后台时,大量的并发访问,没放倒 nginx,但是让 php 崩溃了,而崩溃后的 php,也没有简单的办法重启。从网上搜来的建议,是要自己写一个 cron job每隔几分钟去检查一下,必要的话,就重启。觉得多了一些麻烦。nginx 的一个好处,是配置文件看上去很让人赏心悦目。apache 的,简直就是一大乱屋子,知道地方还好,不知道找半天。不过现在看上去也有改观。

用nginx基本上就肯定要用fastcgi,php 的话,用php-cgi还是用 php-fpm?不熟悉。用apache的话,可以使用fastcgi,也可以使用 modphp。用fastcgi对 apc 有什么影响?看了不少网上的东西,有些地方还是不明白。apc是在一个php-cgi中可以共享,还是每一次访问都会导致失效?也就是说,如果在apache中,用modphp时,apc 缓存可以一直有效,那么在fcgi时候,是不是有限数量的apc同时有效,但是互不相通?而不是一直无效?

请大家帮忙建议哪种情况下,用哪种配置比较好?

家园 俺只知道现在nginx确实比较流行

国内不少大网站也都开始用nginx了,其它就不了解了,毕竟不是干这个的

家园 建议老铁考虑nginx+node.js+couchdb

西西河是基于文档的数据后端,所以couchdb最合适.node.js开发快速,并发吞吐量惊人,内存占用非常轻量级,非常适合多读多写的web应用. nginx做load balancer.

西西河是多读少写,所以加个redis或者memcached中间缓存,redis的好处是后端异步写不用费心去管.

另外这个界面实在是要改改了,太落伍,太不好用了.而且也该考虑加mobile端了.node.js底下有很多不错的single page application框架,可以搭个很酷的SPA.

还要罗嗦一句:这个防scraping的一切皆由js生成的手段可以歇了,防君子防不了小人.现在用node.js+vsdom来scrape不要太容易.

一点浅见,胡乱写写,贻笑方家.

另:才注意到老铁官至二品.古有正德皇帝好给自己封官,老铁很有遗风啊.

家园 个人建议,还是选自己熟悉的。

nginx和apache,肯定是各有各的好处,不过老铁你的精力有限,除非自己非常熟悉nginx或者有朋友帮忙,否则最好不要贸然换平台。

不知道你的具体硬件配置,如果想要尝试的话,也可以前面放一个load balancer,后台先一台机器用nginx,其他机器还用apache,然后随着nginx环境的稳定和熟悉,逐步切换。

仅供参考。

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

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

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

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

家园 动态内容用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很稳定,学习成本也低

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

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

PHP不熟悉。

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

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

一般只是做静态内容。

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

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

家园 当然用nginx

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

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

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

家园 这个主意也不错,呵呵。

现在nodejs比较火,就是不知道老铁熟悉不熟悉。

家园 这是以前的观点了。

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

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

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

家园 还是先介绍一下

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

家园 小声问一下:vsdom是虾米?

难道说的是jsdom?

最近用Ajax的网站多,以前用Python写的爬虫都不那么好用了,正准备写个能搞定Ajax的爬虫,要是有更简单的实现手段就更好了。

家园 typo, jsdom, thx
全看树展主题 · 分页 下页


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

Copyright © cchere 西西河