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))) {