西西河

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

共:💬36 🌺49 新:
全看树展主题 · 分页 上页 下页
家园 反向PROXY在此不适用

现在老铁的西西河的问题是内存不够,目前并发数尚可,反向PROXY未必会解决问题。

家园 环境不同,应用不同选择也不同,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 看看究竟它在干什么呢,就会有个直观概念

家园 我的建议有两个

1,大家捐点钱

首先老铁要说明自己使用的是什么服务器有没有添加内存的可能性,如果没有请参照1.1

1.1

购置新服务器--内存怎么样也能扩到40多G那种。

2,在实现1 选项目标的前提下,

2。1 利用 淘汰下的服务器做架构更改尝试

既然河内由人技术方面出头---

2.2 架构完成后-将数据迁移到新架构,同时新旧两套服务跑。

前端做个类似于服务状态监测的程序,一旦新架构支撑不住,切换到旧的服务环境。

家园 拙见

以前做过apache和nginx的对比性能测试,结论如下

大并发情况下,Apache没Nginx理想,但是差距不大.

apache的失败率多于Nginx,但是请求处理时间略低于Nginx;

fastcgi用tcp-socket方式,比unix-socket的失败率低很多。

nginx在内存占用上有明显优势,大概节省了1/4内存占用量

静态文件apache完败nginx。

以上数据,是实测结果,可以做选型参考

给铁手的一些建议

apacheMPM比prefork应该强很多,如果能转最好转一下,带来好处还是蛮多的。

如果有能力拆分前台改用集群还是有必要的,做应用均衡或者做应用切分带来的性能提升都很大,不然光靠优化这样挖掘最后提升太小了。

家园 根据我对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的维护非常方便,脚本可读性很好。

拙见
家园 你什么时候做的压力测试,大并发的定义是什么

如果采用worker 的apache mpm那么apache一般也就能有3/4000的并发链接,prefork性能更差;而nginx几万个并发没压力。

之所以性能差距这么大,是因为在linux下nginx采用的是基于epoll的事件驱动模型,而prefork/worker都是采用每个链接一个线程/进程的模式,后者太古老了,已经不能适应c10k/c100k的场景需求。

家园 要透气

河主,俺啥都不懂,时政版这两天口水太多了,潜水也快被淹死,过来透气的。

家园 两位对新的 event MPM有没有看法

最新的apache httpd 2.4版本,我试着在自己机器上从源代码安装,MPM全选,并且是loadable的情况下,在我的机器里缺省的MPM是event。应该是代表一种趋势,和nginx靠拢?或者可能产生类似的性能?

还有一点值得注意的是,php的最新版本,包括了 php-fpm,也许是鼓励fast cgi的使用。

家园 老铁未必有精力搞nginx

做过一次将系统从apache整体转移到nginx的事情. 成本挺高的. 甚至很多php脚本都被影响到.

相对apache,nginx专业了一点.

家园 老铁应该号召大家捐款, 然后去amazon搞个

ec2, 内存跟不上了点个按钮就升级. 新加坡美国都开一个node, 照顾一下翻墙众.

数据库用RDS, 每天自动备份.

然后老铁可以专心写网页, 运营网站.

家园 bugfree的软件以前是有的,好像是改名了

http://www.bugfree.org.cn/

不是真的bugfree,是人家起了个好名字。我用着还可以,微型团队管理bug还是不错的。我记得这个软件改名了还是不维护了,今天去看了看,居然发布新版本了

家园 apache event mpm出来的太晚了

apache的event 也是采用epoll的事件驱动模式,原理和nginx的实现类似,性能应该也不会相差太大。貌似从08年就有event mpm了,但是一直处于实验状态,所以不能在正式环境中使用。而这些年,nginx确处于飞速发展中。好像event mpm最近正式发布了。但是时过境迁了,追求兼容性的继续使用prefor/work mpm,追求性能的早就改用nginx了,我觉得市场恐怕不太大。用的人少了,解决问题也就麻烦一点,:-)

如果没有太多的原有特性要兼容还是建议使用nginx,另外要找一下系统的瓶颈是什么,再觉得是否更换。

家园 这个的确是关键。

如果改动工作量很大就别该了,除非性能瓶颈在此。

不过一般来说,web应用的瓶颈都不会在静态这里。

家园 可能我看到的坏银太多了

我做internet安全工作,看到的坏银太多,所以看重稳定性和安全性多一些。我绝对同意nginx性能卓越。

家园 值得一试。

总体性能还不如nginx,但你的迁移成本会低很多。可以先起一个新apache eventmpm,用iptables rules redirect

小部分流量测试一下。假设西西河在一台独立的机器上运行,没有load balancer或HA

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


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

Copyright © cchere 西西河