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

大河奔流 导读 复 35 阅 31514

/ 3 首页 上页 下页 末页

O 关于这个服务器配置的一点建议 1 炼气小修士 字1308 2012-03-16 16:10:09
O 我来试试分析一下,抛砖引玉吧 3 布老虎 字908 2012-03-18 11:30:06
O 先看一下服务器崩溃的原因 aaronliu 字152 2012-03-19 14:35:40
O nginx + php-fpm 1 mmpower 字323 2012-03-19 14:36:06
O 建议 aaronliu 字272 2012-04-01 02:18:15
O 几个建议 1 meokey 字684 2012-09-25 22:53:21
2012-03-16 16:10:09
3689723 复 3685846
炼气小修士炼气小修士`56967`/bbsIMG/face/0000.gif`70`44`2`408`从八品上:承奉郎|御武(侮)校尉`2010-05-28 02:30:00`0
关于这个服务器配置的一点建议 1

nginx+php-cgi,是现在比较主流的做法,稳定性是不用质疑的。

php-cgi进程用spawn-fcgi管理,不需要自己检查进程存活,因为php-cgi进程是比较容易死掉的,spawn-fcgi会管理进程的。

apc缓存貌似可以设置存进shm的,共享应该是没问题的。

楼下有推荐amazon的,这个关系不是很大,只是说他有些服务比较方便。

推荐nodejs的同学,,,这个修改成本比较高,nodejs现在也还不成熟。

====

看到楼下的帖子了,想补充一下。

楼下有几点说得很对,nginx静态文件可以达到每秒几万次的RPS,而动态内容则主要取决于后端程序的执行。

但nginx并非是所谓的内容load进内存,它的并发能力是来源于它基于事件响应的异步io。当然也有缓存的插件。

而后面的描述,感觉他把nginx和tomcat之类的app容器混淆了。拿nginx和tomcat集群相提并论。其实,nginx作为web server,它只负责静态文件处理,对于动态网页,它都是转发给处理者的。比如php会通过fastcgi协议传给php-cgi进程,python则可能是使用wsgi传给后端。所以它根本不需要多考虑文件io和数据库io。

nginx做集群也很多,只是它在里面的角色不是tomcat这样的app容器,而一般是LB的前端反向代理,或者作为web server。

nginx优势除了高并发,还有内存使用小,响应快。当然是相对apache而言的。除了sina,taobao也有用的,其实找找还是挺多应用的。

大web系统没有不切分的,除了web server的,db和cache都会切分。

顺便谈下cache,我觉得论坛这类读写频繁的系统,使用memcached等缓存系统的话,必须要先精心设计好缓存的方式,不然弄不好的话,性能可能不会有很大提高。


铁手 接纳。 最后于2012-03-29 01:27:02改,共1次;
2012-03-16 16:10:09
2012-03-18 11:30:06
3692278 复 3685846
布老虎布老虎`2473`/bbsIMG/face/0000.gif`70`12`1180`15134`从四品下:中大夫|明威将军`2004-03-11 21:25:48`0
我来试试分析一下,抛砖引玉吧 3

首先一个像西西河这样需要查询数据库的网站,bottleneck永远在数据库这边, NGinx这种所谓的支持大并发(每秒几万次甚至几十万次请求),只适用于门户网站之类的静态网页,比如新浪新闻之类,谁上网看到的都是这些东西。总之NGinx就是把所有的内容load进memory里面,然后threading的数量和CPU的数量相等;明摆着这就是个CPU bound的设计,根本考虑file I/O或者database I/O.

一般的动态网页(比如Amazon)这种highly personalized的网站,NGinx不能用,还是得LoadBalancer后面带上一串Tomcat,甚至几级LoadBalancer.道理很简单,一次数据库查询(如果数据库在另一台机器上),你能做到200ms的response time就很不错了,当然memcached会快一点,也要70-80ms左右。每秒几十万次查询?先看看你的数据库能不能顶住吧。

说到内存,tomcat JVM 内存都在4G到6G左右,足够了。注意Sun的JVM是generational GC的, 所以内存不够肯定是程序问题或者JVM的GC配置问题。

我做过的系统如果用LB的话,基本上带上两三个Tomcat, 支持每秒上千次并发没问题,这还是有很多数据库查询操作的情况下。


2012-03-18 11:30:06
2012-03-19 14:35:40
3693492 复 3685846
aaronliuaaronliu`82387`/bbsIMG/face/0000.gif`70`0`0`8`从九品上:文林郎|陪戎校尉`2012-03-18 11:03:30`0
先看一下服务器崩溃的原因

西西河已经运行非常久的时间了,铁手在主贴中提到“服务器崩溃”,我觉得还是先要查一查程序上有没有问题。看看系统的整体瓶颈在哪。可不可以加上memcache作缓存。


  • 本帖 1 回复
铁手 接纳。
2012-03-19 14:35:40
2012-03-19 14:36:06
3693493 复 3685846
mmpowermmpower`11653`/bbsIMG/face/0000.gif`70`0`2`44`正九品上:儒林郎|仁勇校尉`2006-05-05 00:06:57`0
nginx + php-fpm 1

since we replaced apache (worker mpm)/modphp with nginx/php-fpm the site is much more responsive; memory footprint is also smaller and overall improved a lot in scalability and stablity.

for apc you should still be able to use shm for caching stuff. eAccelerator and xcache do the same thing but in general perform better.


铁手 接纳。
2012-03-19 14:36:06
2012-04-01 02:18:15
3701881 复 3693492
aaronliuaaronliu`82387`/bbsIMG/face/0000.gif`70`0`0`8`从九品上:文林郎|陪戎校尉`2012-03-18 11:03:30`0
建议

列一下我平时用的.

1/ htop看一下cpu的情况.

2/ vmstat看一下资源情况.

3/ mysql的showslowquery打开.

这些估计也是大家都这样用的.

铁手, 你应该列出来更多的信息. 比方瓶颈在哪, PHP/MYSQL/NETWORK, 没有更多的信息, 没办法帮你想主意.另外,应该在代码中打些log. 便于知道"曾经发生了什么."


铁手 接纳。
2012-04-01 02:18:15
2012-09-25 22:53:21
3796231 复 3685846
meokey
meokey`18703`/bbsIMG/face/0000.gif`70`2806`5120`53988`正七品上:朝请郎|致果校尉`2007-07-25 06:52:47`0
几个建议 1

1. nginx稳定性肯定没有问题,性能和安全也不会有问题,这都是经过大型网站实践的。nginx本身handle西西河的流量肯定没有问题,如果有问题,90%是脚本或者配置的问题。nginx搞不定的流量,apache在同样硬件配置下肯定也搞不定。如果内存是关键因素,而且移植困难不大,改成nginx

2. 老铁提到内存不足。我觉得可以把网页加密的功能去掉了。这个功能的用处实在不大,防君子不防小人,但非常占用cpu和内存,而且对于写手机用户端有极大的障碍。这个功能去掉了,我看老铁可以省掉一笔买内存的钱。而且用手机端上网现在是趋势了,关键原因是方便,有个几分钟时间都可以掏出手机看看,不用特地坐在书桌边打开电脑了。老铁不能忽视这个流量啊

3. php崩溃的问题好像不少人都遇到过,临时解决方法就是写(抄)个监视脚本,有人说可以改用php-fpm


2012-09-25 22:53:21
帖内引用

/ 3 首页 上页 下页 末页