INFO now contains the time (in usecs) needed to fork() in order to persist. The info is available in the stats section of INFO.
This commit is contained in:
parent
43222f253a
commit
615e414c5d
@ -565,16 +565,18 @@ werr:
|
|||||||
*/
|
*/
|
||||||
int rewriteAppendOnlyFileBackground(void) {
|
int rewriteAppendOnlyFileBackground(void) {
|
||||||
pid_t childpid;
|
pid_t childpid;
|
||||||
|
long long start;
|
||||||
|
|
||||||
if (server.bgrewritechildpid != -1) return REDIS_ERR;
|
if (server.bgrewritechildpid != -1) return REDIS_ERR;
|
||||||
if (server.ds_enabled != 0) {
|
if (server.ds_enabled != 0) {
|
||||||
redisLog(REDIS_WARNING,"BGREWRITEAOF called with diskstore enabled: AOF is not supported when diskstore is enabled. Operation not performed.");
|
redisLog(REDIS_WARNING,"BGREWRITEAOF called with diskstore enabled: AOF is not supported when diskstore is enabled. Operation not performed.");
|
||||||
return REDIS_ERR;
|
return REDIS_ERR;
|
||||||
}
|
}
|
||||||
|
start = ustime();
|
||||||
if ((childpid = fork()) == 0) {
|
if ((childpid = fork()) == 0) {
|
||||||
/* Child */
|
|
||||||
char tmpfile[256];
|
char tmpfile[256];
|
||||||
|
|
||||||
|
/* Child */
|
||||||
if (server.ipfd > 0) close(server.ipfd);
|
if (server.ipfd > 0) close(server.ipfd);
|
||||||
if (server.sofd > 0) close(server.sofd);
|
if (server.sofd > 0) close(server.sofd);
|
||||||
snprintf(tmpfile,256,"temp-rewriteaof-bg-%d.aof", (int) getpid());
|
snprintf(tmpfile,256,"temp-rewriteaof-bg-%d.aof", (int) getpid());
|
||||||
@ -585,6 +587,7 @@ int rewriteAppendOnlyFileBackground(void) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Parent */
|
/* Parent */
|
||||||
|
server.stat_fork_time = ustime()-start;
|
||||||
if (childpid == -1) {
|
if (childpid == -1) {
|
||||||
redisLog(REDIS_WARNING,
|
redisLog(REDIS_WARNING,
|
||||||
"Can't rewrite append only file in background: fork: %s",
|
"Can't rewrite append only file in background: fork: %s",
|
||||||
|
@ -482,6 +482,7 @@ werr:
|
|||||||
|
|
||||||
int rdbSaveBackground(char *filename) {
|
int rdbSaveBackground(char *filename) {
|
||||||
pid_t childpid;
|
pid_t childpid;
|
||||||
|
long long start;
|
||||||
|
|
||||||
if (server.bgsavechildpid != -1 ||
|
if (server.bgsavechildpid != -1 ||
|
||||||
server.bgsavethread != (pthread_t) -1) return REDIS_ERR;
|
server.bgsavethread != (pthread_t) -1) return REDIS_ERR;
|
||||||
@ -493,6 +494,7 @@ int rdbSaveBackground(char *filename) {
|
|||||||
return dsRdbSaveBackground(filename);
|
return dsRdbSaveBackground(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
start = ustime();
|
||||||
if ((childpid = fork()) == 0) {
|
if ((childpid = fork()) == 0) {
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
@ -503,6 +505,7 @@ int rdbSaveBackground(char *filename) {
|
|||||||
_exit((retval == REDIS_OK) ? 0 : 1);
|
_exit((retval == REDIS_OK) ? 0 : 1);
|
||||||
} else {
|
} else {
|
||||||
/* Parent */
|
/* Parent */
|
||||||
|
server.stat_fork_time = ustime()-start;
|
||||||
if (childpid == -1) {
|
if (childpid == -1) {
|
||||||
redisLog(REDIS_WARNING,"Can't save in background: fork: %s",
|
redisLog(REDIS_WARNING,"Can't save in background: fork: %s",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
|
@ -964,6 +964,7 @@ void initServer() {
|
|||||||
server.stat_keyspace_misses = 0;
|
server.stat_keyspace_misses = 0;
|
||||||
server.stat_keyspace_hits = 0;
|
server.stat_keyspace_hits = 0;
|
||||||
server.stat_peak_memory = 0;
|
server.stat_peak_memory = 0;
|
||||||
|
server.stat_fork_time = 0;
|
||||||
server.unixtime = time(NULL);
|
server.unixtime = time(NULL);
|
||||||
aeCreateTimeEvent(server.el, 1, serverCron, NULL, NULL);
|
aeCreateTimeEvent(server.el, 1, serverCron, NULL, NULL);
|
||||||
if (server.ipfd > 0 && aeCreateFileEvent(server.el,server.ipfd,AE_READABLE,
|
if (server.ipfd > 0 && aeCreateFileEvent(server.el,server.ipfd,AE_READABLE,
|
||||||
@ -1439,7 +1440,8 @@ sds genRedisInfoString(char *section) {
|
|||||||
"keyspace_hits:%lld\r\n"
|
"keyspace_hits:%lld\r\n"
|
||||||
"keyspace_misses:%lld\r\n"
|
"keyspace_misses:%lld\r\n"
|
||||||
"pubsub_channels:%ld\r\n"
|
"pubsub_channels:%ld\r\n"
|
||||||
"pubsub_patterns:%u\r\n",
|
"pubsub_patterns:%u\r\n"
|
||||||
|
"latest_fork_usec:%lld\r\n",
|
||||||
server.stat_numconnections,
|
server.stat_numconnections,
|
||||||
server.stat_numcommands,
|
server.stat_numcommands,
|
||||||
server.stat_expiredkeys,
|
server.stat_expiredkeys,
|
||||||
@ -1447,7 +1449,8 @@ sds genRedisInfoString(char *section) {
|
|||||||
server.stat_keyspace_hits,
|
server.stat_keyspace_hits,
|
||||||
server.stat_keyspace_misses,
|
server.stat_keyspace_misses,
|
||||||
dictSize(server.pubsub_channels),
|
dictSize(server.pubsub_channels),
|
||||||
listLength(server.pubsub_patterns));
|
listLength(server.pubsub_patterns),
|
||||||
|
server.stat_fork_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Replication */
|
/* Replication */
|
||||||
|
@ -547,6 +547,7 @@ struct redisServer {
|
|||||||
long long stat_keyspace_hits; /* number of successful lookups of keys */
|
long long stat_keyspace_hits; /* number of successful lookups of keys */
|
||||||
long long stat_keyspace_misses; /* number of failed lookups of keys */
|
long long stat_keyspace_misses; /* number of failed lookups of keys */
|
||||||
size_t stat_peak_memory; /* max used memory record */
|
size_t stat_peak_memory; /* max used memory record */
|
||||||
|
long long stat_fork_time; /* time needed to perform latets fork() */
|
||||||
/* Configuration */
|
/* Configuration */
|
||||||
int verbosity;
|
int verbosity;
|
||||||
int maxidletime;
|
int maxidletime;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user