SNS 源码: ThinkSNSPlus 性能简述 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Zhiyicx
V2EX    PHP

SNS 源码: ThinkSNSPlus 性能简述

  •  
  •   Zhiyicx 2018-11-01 14:52:50 +08:00 3100 次点击
    这是一个创建于 2548 天前的主题,其中的信息可能已经有所发展或是发生改变。

    概述

     本文主要描述 ThinkSNS Plus 服务端系统性能、服务端高性能部署方案及优化措施、服务端系统持续优化及升级策略。本文未涉及前端( PC 站点、H5 站点、Android、IOS )性能方案。 

    系统吞吐量

     压测的服务器为一台阿里云 ECS 服务器,服务器配置为 2vCPU/4GB/5Mbps/普通云盘 200G。安装 thinksns plus 后给数据库添加了少量据,保证每个接口都是有数据的状态;然后在服务器本地压测一些常用的数据读取接口,压测结果吞吐量为 30QPS 左右。 30QPS 是指系统在每秒可以处理 30 个请求,一天有 86400 秒,算下来一天可以处理约 260 万个请求;根据 thinksns plus 移动端统计,平均每页面 3 个请求,假设用户每日平均访问 50 个页面,计算结果为支持 1.7 万左右的日活用户(日活用户不是注册会员数量)。当然,这样计算出来的结果是不准确的,计算中没有考虑峰值和其他因素,需要根据实际业务做分析。 

    系统部署和优化

    系统和基础软件优化

     优化系统和基础软件( nginx、mysql、php 等)能让系统支持更多的连接数和请求,并且运行起来更稳定。具体的优化项根据不同的系统环境和业务需求,自行百度或谷歌上面有非常多的优化教程,不在一一列举。 

    ThinkSNS Plus 部署优化

    1. 使用 php7,php7 较之前的 php5 版本性能提升一倍以上。

    2. 开启 PHP OPcache,生产环境应该开启 OPcache,性能会有巨大提升。

    3. 关闭调试模式,.env 文件中,APP_DEBUG 设置为 false ;可减少程序逻辑处理。

    4. 配置信息缓存 php artisan config:cache,缓存配置文件,减少磁盘 IO。

    5. 路由缓存 php artisan route:cache,缓存路由文件,减少磁盘 IO。

    6. 自动加载优化 composer dumpautoload,优化自动加载。

    7. 配置并使用 redis /memcached 来存储会话,从内存中读取会话信息没有磁盘 IO。

    8. 配置并使用 redis /memcached 来存储缓存数据,从内存中读取缓存数据没有磁盘 IO。

    9. 将程序和数据安装到 SSD 磁盘;以阿里云 ECS 云盘为例:SSD 云盘 16000IOPS+,而所谓的高效云盘不过 3000IOPS ; SSD 云盘效率是高效云盘的五倍以上。

    10. 采用独立的数据库服务器或采用云数据库如阿里云:RDS。

    11. 采用独立的缓存服务器或采用云缓存系统。

    12. 使用 CDN 加速图片、视频、文件的访问和下载。

    13. 挂载单独的磁盘用于存储图片、视频和其他用户上传的文件。

    以上优化项#7~#13 都不是必须的,但是建议都进行配置或选择性配置。按要求优化以上内容之后,整体性能可以提高一倍以上。

    分布式部署

     分布式部署为解决更大的业务需求,如更大的请求峰值、数据库读写性能瓶颈,网络带宽瓶颈等;目标为建立高可用性系统,单点故障不影响系统服务。目前 thinksns plus 支持的分布式部署方案如下: 

    l 应用程序负载均衡,多台服务器部署 thinksns plus 系统,通过负载均衡器转发请求到部署的服务器。thinsns plus 无需任何配置,但是要将会话数据、缓存数据、用户上传文件单独部署,也就是上面“ thinksns plus 部署优化中的#7、#8、#10、#13 条”。

    l 数据库读写分离,安装好数据库之后,只需在简单配置即可支持,也可以使用云数据库做读写分离。

    l 分布式缓存系统,搭建好分布式缓存服务器后仅需简单配置即可支持,也可以采用兼容 redis 协议的云缓存系统。

    l 分布式文件系统(目前不支持,已列入计划,之后会支持云存储)

    系统优化和升级

     以上提及的各种优化部署策略,部分都是建立在增加服务器的基础上提升系统的处理能力,并未涉及到系统程序的优化,那是不是程序优化就不重要了? 当然不是,在业务初期,增加服务器可以快速扩容系统处理能力,而且也是性价比最高的方式;假如聘一个人专门优化程序,一年 10 万薪资,那这个人一年能提高程序的一倍性能也是很不错了,但这十万要是花在服务器上面,性能可能立即提高 10 倍。 而且,thinksns plus 产品研发团队每天都在优化和改进产品,每次版本迭代,已安装的 thinksns plus 程序都可以通过自动或手动的方式合并最新的特性,这其中有很多特性就是针对于性能的优化。保持更新不间断,已安装的 thinksns plus 程序性能也将越来越好。 

    所有我们的产品体验都在我们的官网“免费体验”页面可以找到: http://www.thinksns.com/experience.html

    APP 端体验,下载新版本的朋友们,请先卸载老版本,否则无法使用; iphone 手机安装 demo 前请点击设置-通用-设备管理-信任(企业应用)

    ThinkSNS(简称 TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新系统为 ThinkSNS V4 及 ThinkSNS+两个并行系统。感谢大家一致对 Ts 团队和产品的支持,2018 我们在路上。

    ThinkSNS 拥有 50 多个功能模块,全方位覆盖 SNS 系统所需,微博(朋友圈)、即时聊天、直播、论坛、资讯、CMS、活动、频道、圈子、问答、打赏等主流社交功能应有尽有。根据您的项目需求灵活选型运用,支持深度灵活二次开发。

    1 条回复    2018-11-01 14:54:56 +08:00
    realpg
        1
    realpg  
    PRO
       2018-11-01 14:54:56 +08:00
    独到的测试方式:

    安装 thinksns plus 后给数据库添加了少量数据,保证每个接口都是有数据的状态;然后在服务器本地压测一些常用的数据读取接口,压测结果吞吐量为 30QPS 左右。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5186 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 07:47 PVG 15:47 LAX 00:47 JFK 03:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86