V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Zhiyicx
V2EX  ›  PHP

SNS 源码: ThinkSNSPlus 性能简述

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

    概述

        本文主要描述 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  
       2018-11-01 14:54:56 +08:00
    独到的测试方式:

    安装 thinksns plus 后给数据库添加了少量数据,保证每个接口都是有数据的状态;然后在服务器本地压测一些常用的数据读取接口,压测结果吞吐量为 30QPS 左右。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2667 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 10:00 · PVG 18:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.