互联网直播/点播平台直播时单路视频在线用户并发到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的软件,如果每个软件里面都没有释放数据库链接,可能也不行。

原创文章 113 获赞 11 访问量 2万+

猜你喜欢

转载自blog.csdn.net/EasyDSS/article/details/105417237