diff options
-rw-r--r-- | src/aof.c | 1 | ||||
-rw-r--r-- | src/config.c | 1 | ||||
-rw-r--r-- | src/redis.c | 7 | ||||
-rw-r--r-- | src/redis.h | 1 |
4 files changed, 8 insertions, 2 deletions
@@ -108,6 +108,7 @@ void flushAppendOnlyFile(int force) { } /* Otherwise fall trough, and go write since we can't wait * over two seconds. */ + server.aof_delayed_fsync++; redisLog(REDIS_NOTICE,"Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis."); } } diff --git a/src/config.c b/src/config.c index 316f0a284..2be92426f 100644 --- a/src/config.c +++ b/src/config.c @@ -859,6 +859,7 @@ void configCommand(redisClient *c) { server.stat_numcommands = 0; server.stat_numconnections = 0; server.stat_expiredkeys = 0; + server.aof_delayed_fsync = 0; resetCommandTableStats(); addReply(c,shared.ok); } else { diff --git a/src/redis.c b/src/redis.c index 2f27b4ddb..e926fd9b6 100644 --- a/src/redis.c +++ b/src/redis.c @@ -1007,6 +1007,7 @@ void initServerConfig() { server.aof_rewrite_base_size = 0; server.aof_rewrite_scheduled = 0; server.aof_last_fsync = time(NULL); + server.aof_delayed_fsync = 0; server.aof_fd = -1; server.aof_selected_db = -1; /* Make sure the first time will not match */ server.aof_flush_postponed_start = 0; @@ -1802,12 +1803,14 @@ sds genRedisInfoString(char *section) { "aof_base_size:%lld\r\n" "aof_pending_rewrite:%d\r\n" "aof_buffer_length:%zu\r\n" - "aof_pending_bio_fsync:%llu\r\n", + "aof_pending_bio_fsync:%llu\r\n" + "aof_delayed_fsync:%lu\r\n", (long long) server.aof_current_size, (long long) server.aof_rewrite_base_size, server.aof_rewrite_scheduled, sdslen(server.aof_buf), - bioPendingJobsOfType(REDIS_BIO_AOF_FSYNC)); + bioPendingJobsOfType(REDIS_BIO_AOF_FSYNC), + server.aof_delayed_fsync); } if (server.loading) { diff --git a/src/redis.h b/src/redis.h index 1fc2ae393..e4fd47d3f 100644 --- a/src/redis.h +++ b/src/redis.h @@ -638,6 +638,7 @@ struct redisServer { int aof_selected_db; /* Currently selected DB in AOF */ time_t aof_flush_postponed_start; /* UNIX time of postponed AOF flush */ time_t aof_last_fsync; /* UNIX time of last fsync() */ + unsigned long aof_delayed_fsync; /* delayed AOF fsync() counter */ /* RDB persistence */ long long dirty; /* Changes to DB from the last save */ long long dirty_before_bgsave; /* Used to restore dirty on failed BGSAVE */ |