本帖最后由 yao970953039 于 2013-01-19 19:54:35 编辑

解决方案 »

  1.   

    可选方案:
    1 mongo实时查询+持久化存储。
    2 mysql持久化存储+memcahced实时查询。
    3 多台redis主从策略+持久化存储。其实日均30w的pv压力并不大,直接用mongo就可以了。想用mysql就必须搭配个cache,memcached和redis都可以和mysql搭配。或者你服务器多的话做mysql集群也可以。只用redis的话,表结构涉及稍微有些麻烦,到不是说没关系型数据库不行,主要是redis不支持多列条件匹配查询。所以设计数据结构的时候,原本可以存在一张表的数据,你可能需要拆的很散,就像再mysql中做sharing。而mongo虽然也非关系型db,但他可以支持多列条件查询,表结构设计就简单了许多。服务器选择当然配置越高越好,这个不知如何回答你。因为除了并发量之外,业务逻辑的复杂程度也会造成qps低。具体你还是要压测一下。我现在有个业务日均pv 300、400w。业务逻辑复杂度一般。但服务器配置非常高。至强24核+64g内存。我采用的是mysql+redis的架构。并且做了lvs 3台均衡负载。mysql负责持久化存储,redis白天没有写操作,3台服务器的日志统一http get打点到另一台日志服务器,每天晚上会有一个大流程脚本,将当天运营人员在后台更新和录入的数据以及业务跑出的日志经过计算后写入mysql,再从mysql写入redis。redis也做了主从,其实redis slave就可以做持久化,但感觉redis的持久化目前还不成熟,所以我还是采用mysql做持久化。那三台服务器的php-fpm和redis-server进程的cpu占用率连1/100都不到。你可以以此做个参考。
      

  2.   

    嗯,因为上面的投资人有钱,所以我可以选择很好的硬件来支撑。以前没架构过大型网站所以特地来向各位前辈请教。是否在日均PV10W的情况下,连缓存都不需要?我可以采用最顶级的服务器。目前我只用过php+mysql+memcached,这样的搭配,如果只用1台顶级服务器能否顶住PV30W的访问? 现在有主流的电商用mongodb?我只在开发游戏的时候用过mongo存储数据,不知用到电商网站是否合适。运维这方面我不太懂,请给个指教。。
      

  3.   

    不要缓存那是开玩笑吧?
    就算不要php的缓存,系统级的缓存也少不了
      

  4.   

    那请问下服务器该如何选购??这方面完全不懂,就按照日均访问50W PV来   采购。 钱不是问题  
      

  5.   

    本帖最后由 PhpNewnew 于 2013-01-19 23:23:41 编辑
      

  6.   

    年后上项目,到时候在让牛哥帮忙,万网肯定是要找的。我现在是做前期准备工作。
    牛哥要抱大腿?行啊,到时候给你个主管当当。
    那啥文件缓存是缓存啥东西?访问量多的页面?比如goodlist这样的?
      

  7.   

    我对服务器一知半解,跟赵括是一个类型的我只知道连接数(尤其并发连接数)对服务器消耗比较大
    也是以此作为指引编程优化,尽快结束一个连接(包括数据库连接)为目的
    所以长连接、IO等等都可免则免硬件我就不说了,我连网卡buffer的工作原理都没完全弄清楚 
      

  8.   


    一些不常更改的数据都可以做缓存...商品的介绍 用户的资料 等等...缓存成文件,就不需要每次都去读取数据库
    很多东西结合项目来做吧,至于mongodb 没用过...但我相信mysql,当钱已经不是问题的时候,剩下的技术都不是问题....内存很贵的 老徐如是说...
      

  9.   

    本帖最后由 PhpNewnew 于 2013-01-20 15:02:31 编辑
      

  10.   

    当注册用户量十分庞大的时候,比如上10E,是否需要分表分库存储了?
    我这是政府行政部门so  钱不是XX。。日IP 2-5W  PV 50W  配置啥服务器好呢?
    接下来谈谈PHP的问题。一台PC机当服务器  4G内存  I7双核  1T 硬盘  WEB服务器nginx 数据库mysql  这样的机器上面部署个网站,极限下能承载的访问量能达到多少呢?在前期访问量不大的情况下我想偷工减料
      

  11.   


    版主过奖了,我没自己搭建过lvs,都是公司运维给搭建的。不过我相信不会太复杂,照着教程弄就可以。http://zh.linuxvirtualserver.org/ 具体问题楼主可以去这上面看。楼主也可以用nginx的upstream来代替lvs,这个我倒是弄过,配置还是比较简单的。做集群有两个目的:
    1 负载均衡
    2 避免单点故障其实我觉得楼主现在考虑的有点远了,先把系统做完,然后压力测试,才能知道哪里需要优化。现在没有压测数据,一切都是空谈。至于何时该用集群,这个不是定式。主要好处就是上面提到的两点。既然钱不是问题,那你就不要考虑文件缓存了,文件缓存一般只用于小规模,大多数性能问题的瓶颈都在磁盘i/o。文件缓存也是要磁盘i/o,所以用文件缓存mysql的操作只能解决一部分问题或是给mysql分担压力。当然如果真的不差钱,你可以去买ssd。memory和ssd对比,memory明显比ssd的读写效率更高,但问题就是memory不保险,一旦服务器重启或进程崩溃就会丢失。所以我们一般只对memory做读操作。并且那些数据都不是很重要,丢了也无大碍。如果你的系统的写操作也很频繁。那可以考虑ssd,虽然不如memory那么高效。但也比普通磁盘高多了。而且他没有memory的那些缺点。facebook大量应用了ssd,当然,价格不菲,而且寿命较短。一般游戏的服务器对ssd的需求比较高,因为有很多需要即时写入的数据,并且也非常重要。如果非要用memory代替ssd来进行写数据,那你必须想一种持久化的方案。比如redis本身就支持这一点。在一定时间内如果有n个key被写入,他就会写到它的aof文件中做持久化。重启redis后,它会尝试从aof中恢复数据。不过即使是这样,还是有可能会丢数据。
      

  12.   


    你还是没明白吗?
    想知道能承受多少负载量,要两个必须参数:
    1 机器硬件配置
    2 业务逻辑复杂度你只给了一个参数,所以别人无法回答你。你这个配置,如果只用php执行个echo 123;在并发1000的时候,qps差不多700左右。如果是个静态html,qps可以到7、8000左右。而如果你的php做了很复杂的查库,计算等工作,可能qps会降至300以下。所以最准确的做法就是先把系统做好,然后做压力测试。拿到qps后才能确定其它的事情。另外根据经验,include、require、include_once、require_once这些操作非常影响php的性能。我以前压测时,include几个class文件就消耗掉了3、4000的qps。所以如果追求极致的效率,就尽量不要太oop。
      

  13.   

    多谢ShadowSniper兄。其实网站已经做好,奈何我除了PHP其他都是一知半解,连测试的资格都欠奉,唯一的优势就是正副有钱,可以让我放手招人来实现,但是我必须要懂一点原理,所以才来发帖问大家的,征求下意见,require_once我知道弊端,但是组里程序猿的水平层次不齐,只有用require_once保险些,除非项目从头到尾都是一个人来搭建及维护。我的逻辑不复杂,不是淘宝网,充其量等于五分之一个京东。
    现在日均的IP才1W2.  PV4W  好像连CDN加速都没做
      

  14.   

    http_load、webbence、apache ab。这些都可以,不过都不支持post请求,所以压测时,你可以先将所有post请求转为get请求。$_GET = $_POST;。你先把mysql的慢查日志打开,定位到慢查询sql,才容易找到你php比较慢的模块。然后对这里进行压力测试。
      

  15.   

    把apache換成nginx,多購置幾台網卡不錯的PC,然後購置一台專業服務器,專業服務器用來配合nginx做分流且這台服務器直接對外,其他的pc則放入局域網內部即可,程序在開發的時候使用session要特別注意一下幾台服務器session共享問題
    這樣就足够了.
      

  16.   

    對了,千萬別用windows操作系統,紅帽子系列的centos不錯,穩定而可靠.或者乾脆買正版紅帽子
      

  17.   

    肯定不会用windows系统,线上项目谁敢用啊。服务器会选高配置的
      

  18.   

    鼓个掌给ShadowSniper.....
    另....LZ头像不错....
    另....妞妞...日后告知大腿手感....
    ......
      

  19.   

    该独立服务器了,自己配置服务器。加一些mencache啊之类的。
    然后用dnspod来分省解析,如果广东的用的多广东的单独一台主机,国内其他地区则用另外一台。
    数据库则变为主从数据库
      

  20.   

    CI,THINKPHP都可以呀,选择的余地太多了
      

  21.   


    lz不是在问php框架吧,人家问的是服务器的搭建。
      

  22.   

    好贴,留名我觉得最重要的还是压力测试,自己动手做测试
    我下一步的计划是买几台二手电脑,专门用来做压力测试把MEMCACHE,SSD,什么的概念问题,全都测试一遍
    然后找出最佳的搭配因为缓存问题,之前也讨论过了,无论是存到磁盘还是MYSQL都会遇到IO问题所以用缓存感觉也并不是解决网站压力大的方法
    用什么更好的方法解决,还在大家来讨论下吧
      

  23.   

    PV30W确实不算啥。。但是怎么说呢,肯定要一开始就按高标准来,缓存,架构,数据库都要用主流的。现在的网站是ecshop改的,我不知道他能抗住多大的访问量,毕竟先天不足,不想等某天达到了峰值挂掉了。那我会哭的。新网站已经想好用kohana框架了,各方面都经得起考验
      

  24.   

    ecshop在高并发访问情况下容易出现很多问题,性能不是很好!