Page 1 of 2

大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 8:15
by jwxie
nginx vs. Lighttpd vs. Apache這類文章都已經看了好多了
在定位上, 前兩者在streaming, rail的東西當然是比apache好很多
但大家又如何看待一個普通的php+mysql server呢

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 11:28
by IOsetting
jwxie wrote:nginx vs. Lighttpd vs. Apache這類文章都已經看了好多了
在定位上, 前兩者在streaming, rail的東西當然是比apache好很多
但大家又如何看待一個普通的php+mysql server呢
用nginx, lighttpd之类负责推站点的静态内容, 脚本和前台页面还是交给apache, 用独立的数据库和缓存服务器. 如果apache负载还是太高就用集群+反向, 基本上足够啦.
还有另外一种思路就是完全静态化加局部脚本, 国内有不少大型的站点是静态实现的, 比如和讯. 这样即使应付每天上亿的PV也很容易处理. 不过这和我们平时玩的网站就差别太大了.

还有一种省事的做法, 就是买CDN服务, 等于将所有缓存给直接推到离用户更近的网络去了. 现在大型的站点几乎都有做CDN优化.

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 12:24
by jwxie
按IO的意思, 前兩者在, 比如說, phpbb3上, 應該以apache為優先考慮
但在statics或streaming或rail上應該考慮前兩者?

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 13:34
by IOsetting
jwxie wrote:按IO的意思, 前兩者在, 比如說, phpbb3上, 應該以apache為優先考慮
但在statics或streaming或rail上應該考慮前兩者?
大致如此, 这样能物尽其用, 省时省力.
对于规模很大的社区系统, 从长久考虑应该采用前两者, 因为社区程序不需要用到apache那么多华丽的功能, 而性能是最重要的. 不过对于每日PV不过1m的就不需要考虑了. 小规模的应用apache绝对没问题, 而前两者会需要额外的维护和调试成本.
在站点达到一定规模后, 性能变成瓶颈, 从硬件上解决就要付出更多成本, 相比较而言, 前两者的维护开发成本就变得微不足道. 需要balance一下各种情况下的成本, 每天PV 1m, 10m 或者 100m 的站, 侧重都会不一样, 而不同性质的网站, 也相差很大. 得看具体的案例来决定.

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 13:48
by jwxie
嗯這也的確是看到的所有討論中都有提到的事
apache太多功能
其實我問是因為我想玩玩前兩者
因為沒玩過, apache已經玩了很久
:grin:

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 14:00
by 叶知秋
nginx vs. Lighttpd vs. Apache
跑phpBB都没有太大的差距,要是内存少的话可以使用nginx+spawn模式,当处于spawn模式的时候nginx和lighttpd差距不大,不过似乎nginx更稳定(个人感觉)。
跑phpBB的话首先要优化的是mysql,可以用启用mysql的缓存,启用phpBB的memcache模块。再下去就是文件IO优化,当数据增大的时候文件必然增多,这时候要把附近目录细化,都堆在一个文件夹下会严重拖慢速度。

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 14:45
by jwxie
叶知秋 wrote:nginx vs. Lighttpd vs. Apache
跑phpBB都没有太大的差距,要是内存少的话可以使用nginx+spawn模式,当处于spawn模式的时候nginx和lighttpd差距不大,不过似乎nginx更稳定(个人感觉)。
跑phpBB的话首先要优化的是mysql,可以用启用mysql的缓存,启用phpBB的memcache模块。再下去就是文件IO优化,当数据增大的时候文件必然增多,这时候要把附近目录细化,都堆在一个文件夹下会严重拖慢速度。
嗯, 我現在在用一台非常舊的手提電腦
acer travelmate 520
還是P3的處理器喔

不過主要是用來學習SERVER用的

nginx與lighttpd的比較, 都是以nginx比較穩定的同意率高
我打算再跑一次eA, cache, gzip和zend一起來跑
不過, 我現在想問下
你說, 優化mysql那段怎麼說起
能不能詳細一點點, 解釋一下原理
畢竟我很多時候都是看英文的東西
官方討論或google很多都是英文
另外, 細化是指需要自己, 比如說, 將某些php 或template檔給分拆成兩個, 三個檔案嗎

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 15:54
by IOsetting
叶知秋 wrote:nginx vs. Lighttpd vs. Apache
跑phpBB都没有太大的差距,要是内存少的话可以使用nginx+spawn模式,当处于spawn模式的时候nginx和lighttpd差距不大,不过似乎nginx更稳定(个人感觉)。
跑phpBB的话首先要优化的是mysql,可以用启用mysql的缓存,启用phpBB的memcache模块。再下去就是文件IO优化,当数据增大的时候文件必然增多,这时候要把附近目录细化,都堆在一个文件夹下会严重拖慢速度。
主要的时间还是消耗在php运行时, Mysql 可提升的地方不太多, 缓存加大或者用独立的服务器. 优化一下搜索或者关闭搜索能减少一些特耗时的查询.
用eA或者zend的加速可以提升很多.
文件, 如果是偏下载的论坛, 要安装子目录存储的MOD, 并使用物理地址或者转向下载, phpBB3默认是用php来把文件推给浏览器, 如果文件很大而且访问量很多, 这种方式负载太大. 也可以将静态文件都转向到独立的服务器, 单独加速.
可以将cache文件夹映射到内存, 或者自己实现缓存模块的接口. 还可以用独立的缓存服务器, 然后前面使用集群来做负载平衡.

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 16:01
by 叶知秋
jwxie wrote:
叶知秋 wrote:nginx vs. Lighttpd vs. Apache
跑phpBB都没有太大的差距,要是内存少的话可以使用nginx+spawn模式,当处于spawn模式的时候nginx和lighttpd差距不大,不过似乎nginx更稳定(个人感觉)。
跑phpBB的话首先要优化的是mysql,可以用启用mysql的缓存,启用phpBB的memcache模块。再下去就是文件IO优化,当数据增大的时候文件必然增多,这时候要把附近目录细化,都堆在一个文件夹下会严重拖慢速度。
嗯, 我現在在用一台非常舊的手提電腦
acer travelmate 520
還是P3的處理器喔

不過主要是用來學習SERVER用的

nginx與lighttpd的比較, 都是以nginx比較穩定的同意率高
我打算再跑一次eA, cache, gzip和zend一起來跑
不過, 我現在想問下
你說, 優化mysql那段怎麼說起
能不能詳細一點點, 解釋一下原理
畢竟我很多時候都是看英文的東西
官方討論或google很多都是英文
另外, 細化是指需要自己, 比如說, 將某些php 或template檔給分拆成兩個, 三個檔案嗎
gzip开启phpBB自带的就OK了,除了附件也没多少东西了。

mysql优化这部分一本书都写不完 :? :? :? 只能靠经验

细化这个打错了,是附件细化,可以参考
http://www.phpbbchina.com/forum/viewtop ... =23&t=3337


:grin: :grin: :grin:
不过P3的机器跑现在的应用比较吃力,即使优化也不会太好,所以只是练练手就OK了,要是真想有大的长进还得有大的应用,经验都是慢慢搞出来的^_^

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 16:21
by 叶知秋
IOsetting wrote:
叶知秋 wrote:nginx vs. Lighttpd vs. Apache
跑phpBB都没有太大的差距,要是内存少的话可以使用nginx+spawn模式,当处于spawn模式的时候nginx和lighttpd差距不大,不过似乎nginx更稳定(个人感觉)。
跑phpBB的话首先要优化的是mysql,可以用启用mysql的缓存,启用phpBB的memcache模块。再下去就是文件IO优化,当数据增大的时候文件必然增多,这时候要把附近目录细化,都堆在一个文件夹下会严重拖慢速度。
主要的时间还是消耗在php运行时, Mysql 可提升的地方不太多, 缓存加大或者用独立的服务器. 优化一下搜索或者关闭搜索能减少一些特耗时的查询.
用eA或者zend的加速可以提升很多.
文件, 如果是偏下载的论坛, 要安装子目录存储的MOD, 并使用物理地址或者转向下载, phpBB3默认是用php来把文件推给浏览器, 如果文件很大而且访问量很多, 这种方式负载太大. 也可以将静态文件都转向到独立的服务器, 单独加速.
可以将cache文件夹映射到内存, 或者自己实现缓存模块的接口. 还可以用独立的缓存服务器, 然后前面使用集群来做负载平衡.
呵呵 意见相左了,根据我的经验mysql是最重要的,mysql慢了php取出结果自然就不快,mysql快了php取出结果自然也慢不到那里去。php用eA或者xcache就足够了,因为安装了php缓冲器以后再提升php的速度就很难了,当然重写代码除外。

不推荐将cache文件夹映射到内存,因为我们有更好的选择memcache,配合memcache可以得到更好的效果。
去这里下载acm_memcache.php
http://code.phpbb.com/repositories/entr ... mcache.php
然后放到includes/acm/下面。
然后编辑config.php,把$acm_type = 'file';替换成$acm_type = 'memcache';
当然你还要在acm_memcache.php中配置下你的memcache服务器地址和端口。

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 17:55
by IOsetting
呵呵, 不是说mysql的提升不重要, 只是说不会太明显. 大多数的页面访问里, mysql耗的时间与php解释部分相比少得多, 特别是用了缓存之后, 基本上都是只占10%~30%. 只有在发帖和搜索的过程中会比较耗mysql资源, 针对这些情况进行优化是有意义的. 不过发帖和搜索动作所占比例很小, 通常不到一成. 而且索引库可以独立出来另立服务器处理, 或者直接用第三方的爬虫从前端进行索引(例如用google), 还可以省下更多的数据库负担.
如果是发帖非常密集的论坛, 这种情况另当别论, 数据库确实是提升的最大瓶颈.

在缓存上, 直接用内存文件交互比调用缓存模块的接口要快. 当然, 在缓存复杂变量类型的情况下, 用模块能避免很多编程上的麻烦.

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-07 19:12
by 叶知秋
IOsetting wrote:呵呵, 不是说mysql的提升不重要, 只是说不会太明显. 大多数的页面访问里, mysql耗的时间与php解释部分相比少得多, 特别是用了缓存之后, 基本上都是只占10%~30%. 只有在发帖和搜索的过程中会比较耗mysql资源, 针对这些情况进行优化是有意义的. 不过发帖和搜索动作所占比例很小, 通常不到一成. 而且索引库可以独立出来另立服务器处理, 或者直接用第三方的爬虫从前端进行索引(例如用google), 还可以省下更多的数据库负担.
如果是发帖非常密集的论坛, 这种情况另当别论, 数据库确实是提升的最大瓶颈.

在缓存上, 直接用内存文件交互比调用缓存模块的接口要快. 当然, 在缓存复杂变量类型的情况下, 用模块能避免很多编程上的麻烦.
恩 主要是被楼主的优化迷住了 :grin: :grin: :grin:
要是一个几千注册用户和几万帖子都要进行深度优化phpBB早就被淘汰了 ;) ;) ;)

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-08 0:33
by jwxie
哈哈...兩位高手的話值得學習
我在這方面還是很少了解
memcache我有看到, 剛剛找到一些官方資料
但不曉得我的這台testing server能不能用上
畢竟內存很少, 雖然我已經將swap加到1GB :grin: (說起來其實沒什麼用好像@@)

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-08 14:29
by 叶知秋
内存才是关键 呵呵 swap不宜太大

Re: 大家如何看待nginx vs. Lighttpd vs. Apache

Posted: 2008-08-09 5:31
by jwxie
內存不夠, 用swap來頂一下....真的跑光用swap來頂一下...

http://goko.no-ip.org/wordpress/
http://goko.no-ip.org/phpBB3/
這是我昨天在第7次重新安裝後, 裝好的站
現在對server administration有點認識
不過我沒有用phpmyadmin, 好像是單單是什麼mysql-server mysql-client
這跟phpmyadmin有啥分別?
那我又要怎麼提出他的資料作備份?
我意思是, cpanel有提供phpmyadmin, 是圖形的東西, 但是ubuntu是command-line
那麼mysql-server我又要怎麼提出這些資料, 我是不是不能跟phpmyadmin那樣, 直接在 http://網址/phpmyadmin/打出來後, 再提出資料?

既然我知道不能, 我該怎麼提出這些備份的mysql?
應該有command可以產生 backup後, 並且save在某個特定的位置
有人知道這個command嗎?