null+****@clear*****
null+****@clear*****
2012年 5月 7日 (月) 18:32:37 JST
Kouhei Sutou 2012-05-07 18:32:37 +0900 (Mon, 07 May 2012) New Revision: 5e3d75594de411f07676a47bf6f5a6b1b7179204 Log: groonga: don't restrict the max number of opened files to 4096 Modified files: src/groonga.c Modified: src/groonga.c (+17 -10) =================================================================== --- src/groonga.c 2012-05-02 17:11:15 +0900 (87dba46) +++ src/groonga.c 2012-05-07 18:32:37 +0900 (8a0792c) @@ -60,6 +60,8 @@ #define DEFAULT_MAX_NFTHREADS 8 #define MAX_CON 0x10000 +#define RLIMIT_NOFILE_MINIMUM 4096 + static char bind_address[HOST_NAME_MAX + 1]; static char hostname[HOST_NAME_MAX + 1]; static int port = DEFAULT_PORT; @@ -1945,16 +1947,21 @@ g_server(char *path) GRN_COM_QUEUE_INIT(&ctx_old); #ifndef WIN32 { - struct rlimit lim; - lim.rlim_cur = 4096; - lim.rlim_max = 4096; - /* RLIMIT_OFILE */ - setrlimit(RLIMIT_NOFILE, &lim); - lim.rlim_cur = 0; - lim.rlim_max = 0; - getrlimit(RLIMIT_NOFILE, &lim); - GRN_LOG(ctx, GRN_LOG_NOTICE, "RLIMIT_NOFILE(%" GRN_FMT_LLD ",%" GRN_FMT_LLD ")", - (long long int)lim.rlim_cur, (long long int)lim.rlim_max); + struct rlimit limit; + limit.rlim_cur = 0; + limit.rlim_max = 0; + getrlimit(RLIMIT_NOFILE, &limit); + if (limit.rlim_cur < RLIMIT_NOFILE_MINIMUM) { + limit.rlim_cur = RLIMIT_NOFILE_MINIMUM; + limit.rlim_max = RLIMIT_NOFILE_MINIMUM; + setrlimit(RLIMIT_NOFILE, &limit); + limit.rlim_cur = 0; + limit.rlim_max = 0; + getrlimit(RLIMIT_NOFILE, &limit); + } + GRN_LOG(ctx, GRN_LOG_NOTICE, + "RLIMIT_NOFILE(%" GRN_FMT_LLD ",%" GRN_FMT_LLD ")", + (long long int)limit.rlim_cur, (long long int)limit.rlim_max); } #endif /* WIN32 */ if (!grn_com_event_init(ctx, &ev, MAX_CON, sizeof(grn_com))) {