• 互联网直播/点播平台直播时单路视频在线用户并发到300时服务器出现500错误


    因为近期互联网直播/点播需求量激增,我们在项目对接时也遇到各种各样关于视频直播和点播的问题。今天就为大家分享一个并发报错的案例。

    提出问题

    用户在使用互联网直播/点播平台EasyDSS进行视频会议直播过程中,单路视频的在线用户到300人左右就出现无法响应的问题,服务器报500错误。对系统进行重启后,服务会再次挂掉。

    分析问题

    沟通得知,互联网直播/点播平台的系统使用与并发均在局域网中,用户使用浏览器观看。通过运行日志查看,300个连接出现500错误,是底层开的 http 请求过多导致,也叫做linux系统打开文件数过多,引发数据库访问失败,整个程序就全部不能正常执行了。除了ceph本身相关参数设置外,还可以修改 linux最大打开文件数和数据库迁移。

    解决问题

    第一步:增加连接数
    首先查看当前系统最大的文件打开数,运行如下命令,先对服务器当前设置的文件数查看:

    root@iZj6cj2eq1jzcj0fzwz7f5Z:~# ulimit -Hn
    4096
    root@iZj6cj2eq1jzcj0fzwz7f5Z:~# ulimit -Sn
    1024

    返回的结果是 1024,这个不够用,那么我就修改一下。客户目前是4台服务器通过转推的形式同时运行,每台服务器平均并发量为500。

    如果以最大的量,300个用户,一个用户同时过来5个连接,再加上软件内部还要维护一层连接,300 X 5 X 2,最大可能会 3000 个。当然一般不会到3000,因为很多请求来了就会关闭掉。一个用户一个连接(这里的连接指的是 http 请求,一个请求就算一个连接)

    根据这修改打开文件数量的上限
    root@iZj6cj2eq1jzcj0fzwz7f5Z:~# sysctl -n -e fs.file-max
    4069
    根据这修改打开文件数量的上限,在 /etc/security/limits.conf 文件里,最后加上

    • soft nofile 3500
    • hard nofile 3500

    然后重启 nginx 推出重进

    第二步:数据库迁移到mysql
    当用户数很多的时候,建议将数据库迁移至 mysql使用。系统默认采用的数据库是sqlite,对并发量的支持很少。当然 mysql也需要查看访问 mysql的软件,如果每个软件里面都没有释放数据库链接,可能也不行。

  • 相关阅读:
    SQL Server如何固定执行计划
    领导修炼
    content management system
    npm和bower
    web开发workflow
    偏执狂
    website project team member 角色及开发过程概念图
    website architecture
    王道霸道
    design pattern及其使用
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/12886861.html
Copyright © 2020-2023  润新知