mirror of
https://github.com/fluencelabs/redis
synced 2025-05-04 15:02:13 +00:00
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
32463852be
commit
27c8f84c66
@ -589,13 +589,15 @@ 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.vm_enabled) waitEmptyIOJobsQueue();
|
if (server.vm_enabled) waitEmptyIOJobsQueue();
|
||||||
|
start = ustime();
|
||||||
if ((childpid = fork()) == 0) {
|
if ((childpid = fork()) == 0) {
|
||||||
/* Child */
|
|
||||||
char tmpfile[256];
|
char tmpfile[256];
|
||||||
|
|
||||||
|
/* Child */
|
||||||
if (server.vm_enabled) vmReopenSwapFile();
|
if (server.vm_enabled) vmReopenSwapFile();
|
||||||
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);
|
||||||
@ -607,6 +609,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",
|
||||||
|
@ -498,10 +498,12 @@ werr:
|
|||||||
|
|
||||||
int rdbSaveBackground(char *filename) {
|
int rdbSaveBackground(char *filename) {
|
||||||
pid_t childpid;
|
pid_t childpid;
|
||||||
|
long long start;
|
||||||
|
|
||||||
if (server.bgsavechildpid != -1) return REDIS_ERR;
|
if (server.bgsavechildpid != -1) return REDIS_ERR;
|
||||||
if (server.vm_enabled) waitEmptyIOJobsQueue();
|
if (server.vm_enabled) waitEmptyIOJobsQueue();
|
||||||
server.dirty_before_bgsave = server.dirty;
|
server.dirty_before_bgsave = server.dirty;
|
||||||
|
start = ustime();
|
||||||
if ((childpid = fork()) == 0) {
|
if ((childpid = fork()) == 0) {
|
||||||
/* Child */
|
/* Child */
|
||||||
if (server.vm_enabled) vmReopenSwapFile();
|
if (server.vm_enabled) vmReopenSwapFile();
|
||||||
@ -514,6 +516,7 @@ int rdbSaveBackground(char *filename) {
|
|||||||
}
|
}
|
||||||
} 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));
|
||||||
|
@ -909,6 +909,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,
|
||||||
@ -1207,6 +1208,7 @@ sds genRedisInfoString(void) {
|
|||||||
"hash_max_zipmap_value:%zu\r\n"
|
"hash_max_zipmap_value:%zu\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"
|
||||||
"vm_enabled:%d\r\n"
|
"vm_enabled:%d\r\n"
|
||||||
"role:%s\r\n"
|
"role:%s\r\n"
|
||||||
,REDIS_VERSION,
|
,REDIS_VERSION,
|
||||||
@ -1249,6 +1251,7 @@ sds genRedisInfoString(void) {
|
|||||||
server.hash_max_zipmap_value,
|
server.hash_max_zipmap_value,
|
||||||
dictSize(server.pubsub_channels),
|
dictSize(server.pubsub_channels),
|
||||||
listLength(server.pubsub_patterns),
|
listLength(server.pubsub_patterns),
|
||||||
|
server.stat_fork_time,
|
||||||
server.vm_enabled != 0,
|
server.vm_enabled != 0,
|
||||||
server.masterhost == NULL ? "master" : "slave"
|
server.masterhost == NULL ? "master" : "slave"
|
||||||
);
|
);
|
||||||
|
@ -401,6 +401,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;
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user