From 1a8f75924846e267c2b77a1135d208558a786f2c Mon Sep 17 00:00:00 2001 From: Marko Kreen Date: Thu, 6 Dec 2007 07:29:17 +0000 Subject: [PATCH] log more details about fd usage --- src/main.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index 88e353a..ad3d677 100644 --- a/src/main.c +++ b/src/main.c @@ -410,12 +410,31 @@ static void write_pidfile(void) static void check_limits(void) { struct rlimit lim; - int err = getrlimit(RLIMIT_NOFILE, &lim); - if (err < 0) + int total_users = statlist_count(&user_list); + int fd_count; + int err; + List *item; + PgDatabase *db; + + /* load limits */ + err = getrlimit(RLIMIT_NOFILE, &lim); + if (err < 0) { log_error("could not get RLIMIT_NOFILE: %s", strerror(errno)); - else - log_info("File descriptors limits: S:%d H:%d", - (int)lim.rlim_cur, (int)lim.rlim_max); + return; + } + + /* calculate theoretical max, +10 is just in case */ + fd_count = cf_max_client_conn + 10; + statlist_for_each(item, &database_list) { + db = container_of(item, PgDatabase, head); + if (db->forced_user) + fd_count += db->pool_size; + else + fd_count += db->pool_size * total_users; + } + + log_info("File descriptor limit: %d (H:%d), max_client_conn: %d, max fds possible: %d", + (int)lim.rlim_cur, (int)lim.rlim_max, cf_max_client_conn, fd_count); } static void daemon_setup(void) -- 2.40.0