1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-13 20:01:56 +00:00

Merge branch 'srs.master'

This commit is contained in:
winlin 2014-11-11 17:20:35 +08:00
commit dc4de3491c

View file

@ -1475,12 +1475,36 @@ int SrsConfig::check_config()
// check max connections of system limits // check max connections of system limits
if (true) { if (true) {
int nb_consumed_fds = (int)get_listen().size();
if (get_http_api_listen() > 0) {
nb_consumed_fds++;
}
if (get_http_stream_listen() > 0) {
nb_consumed_fds++;
}
if (get_log_tank_file()) {
nb_consumed_fds++;
}
// 0, 1, 2 for stdin, stdout and stderr.
nb_consumed_fds += 3;
int nb_connections = get_max_connections();
int nb_total = nb_connections + nb_consumed_fds;
int max_open_files = sysconf(_SC_OPEN_MAX); int max_open_files = sysconf(_SC_OPEN_MAX);
if (get_max_connections() > max_open_files) { int nb_canbe = max_open_files - nb_consumed_fds - 1;
// for each play connections, we open a pipe(2fds) to convert SrsConsumver to io,
// refine performance, @see: https://github.com/winlinvip/simple-rtmp-server/issues/194
if (nb_total >= max_open_files) {
ret = ERROR_SYSTEM_CONFIG_INVALID; ret = ERROR_SYSTEM_CONFIG_INVALID;
srs_error("invalid max_connections=%d, system limit to %d, ret=%d. " srs_error("invalid max_connections=%d, required=%d, system limit to %d, "
"you can login as root and set the limit: ulimit -HSn %d", get_max_connections(), max_open_files, "total=%d(max_connections=%d, nb_consumed_fds=%d), ret=%d. "
ret, get_max_connections()); "you can change max_connections from %d to %d, or "
"you can login as root and set the limit: ulimit -HSn %d",
nb_connections, nb_total, max_open_files,
nb_total, nb_connections, nb_consumed_fds,
ret, nb_connections, nb_canbe, nb_total);
return ret; return ret;
} }
} }