Oknet Xu created TS-4885: ---------------------------- Summary: Incorrect checking of fds_throttle and fds_limit Key: TS-4885 URL: https://issues.apache.org/jira/browse/TS-4885 Project: Traffic Server Issue Type: Bug Components: Core Reporter: Oknet Xu
{code} 902 static void 903 check_fd_limit() 904 { 905 int fds_throttle = -1; 906 REC_ReadConfigInteger(fds_throttle, "proxy.config.net.connections_throttle"); 907 if (fds_throttle > fds_limit + THROTTLE_FD_HEADROOM) { // -------> Incorrect 908 int new_fds_throttle = fds_limit - THROTTLE_FD_HEADROOM; 909 if (new_fds_throttle < 1) { 910 ink_abort("too few file descriptors (%d) available", fds_limit); 911 } 912 char msg[256]; 913 snprintf(msg, sizeof(msg), "connection throttle too high, " 914 "%d (throttle) + %d (internal use) > %d (file descriptor limit), " 915 "using throttle of %d", 916 fds_throttle, THROTTLE_FD_HEADROOM, fds_limit, new_fds_throttle); 917 SignalWarning(MGMT_SIGNAL_SYSTEM_ERROR, msg); 918 } 919 } {code} {code} 1001 static void 1002 adjust_sys_settings(void) 1003 { ... 1024 REC_ReadConfigInteger(fds_throttle, "proxy.config.net.connections_throttle"); 1025 1026 if (getrlimit(RLIMIT_NOFILE, &lim) == 0) { 1027 if (fds_throttle > (int)(lim.rlim_cur + THROTTLE_FD_HEADROOM)) { // ------> Incorrect 1028 lim.rlim_cur = (lim.rlim_max = (rlim_t)fds_throttle); 1029 if (setrlimit(RLIMIT_NOFILE, &lim) == 0 && getrlimit(RLIMIT_NOFILE, &lim) == 0) { 1030 fds_limit = (int)lim.rlim_cur; 1031 syslog(LOG_NOTICE, "NOTE: RLIMIT_NOFILE(%d):cur(%d),max(%d)", RLIMIT_NOFILE, (int)lim.rlim_cur, (int)lim.rlim_max); 1032 } 1033 } 1034 } ... 1043 } {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)